mirror of https://github.com/pret/pokeemerald.git
through GetRegionMapSectionIdAt
This commit is contained in:
parent
f6a55433a2
commit
c324722987
|
@ -10886,7 +10886,7 @@ sub_81CC6A4: @ 81CC6A4
|
|||
bl TransferPlttBuffer
|
||||
bl LoadOam
|
||||
bl ProcessSpriteCopyRequests
|
||||
bl sub_81237B4
|
||||
bl UpdateRegionMapVideoRegs
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81CC6A4
|
||||
|
|
|
@ -5,80 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8123824
|
||||
sub_8123824: @ 8123824
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0xC
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsls r1, 16
|
||||
asrs r5, r1, 16
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
str r0, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x8]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x38
|
||||
movs r3, 0x48
|
||||
bl CalcZoomScrollParams
|
||||
bl sub_81237B4
|
||||
ldr r0, =gRegionMap
|
||||
ldr r2, [r0]
|
||||
ldr r1, [r2, 0x20]
|
||||
cmp r1, 0
|
||||
beq _08123860
|
||||
negs r0, r4
|
||||
strh r0, [r1, 0x24]
|
||||
ldr r1, [r2, 0x20]
|
||||
negs r0, r5
|
||||
strh r0, [r1, 0x26]
|
||||
_08123860:
|
||||
add sp, 0xC
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_8123824
|
||||
|
||||
thumb_func_start sub_812386C
|
||||
sub_812386C: @ 812386C
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
lsls r1, 16
|
||||
ldr r0, =0xfffe0000
|
||||
adds r1, r0
|
||||
lsrs r2, r1, 16
|
||||
cmp r2, 0xE
|
||||
bhi _08123886
|
||||
cmp r3, 0
|
||||
beq _08123886
|
||||
cmp r3, 0x1C
|
||||
bls _08123890
|
||||
_08123886:
|
||||
movs r0, 0xD5
|
||||
b _081238A4
|
||||
.pool
|
||||
_08123890:
|
||||
subs r0, r3, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
ldr r1, =gUnknown_085A096C
|
||||
lsls r0, r2, 3
|
||||
subs r0, r2
|
||||
lsls r0, 2
|
||||
adds r0, r3, r0
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
_081238A4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_812386C
|
||||
|
||||
thumb_func_start sub_81238AC
|
||||
sub_81238AC: @ 81238AC
|
||||
push {r4-r7,lr}
|
||||
|
@ -826,7 +752,7 @@ sub_8123E9C: @ 8123E9C
|
|||
lsrs r0, 16
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
bl sub_812386C
|
||||
bl GetRegionMapSectionIdAt
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
pop {r1}
|
||||
|
@ -1007,7 +933,7 @@ _08123FE6:
|
|||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_812386C
|
||||
bl GetRegionMapSectionIdAt
|
||||
ldr r1, =gRegionMap
|
||||
ldr r1, [r1]
|
||||
lsls r0, 16
|
||||
|
@ -1063,7 +989,7 @@ _08124058:
|
|||
_0812405A:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_812386C
|
||||
bl GetRegionMapSectionIdAt
|
||||
ldr r1, =gRegionMap
|
||||
ldr r1, [r1]
|
||||
lsls r0, 16
|
||||
|
|
|
@ -218,7 +218,8 @@ enum {
|
|||
MAPSEC_DESERT_UNDERPASS,
|
||||
MAPSEC_ALTERING_CAVE_2,
|
||||
MAPSEC_NAVEL_ROCK2,
|
||||
MAPSEC_TRAINER_HILL
|
||||
MAPSEC_TRAINER_HILL,
|
||||
MAPSEC_NONE2
|
||||
};
|
||||
|
||||
struct RegionMap {
|
||||
|
|
|
@ -8,6 +8,13 @@
|
|||
#include "trig.h"
|
||||
#include "region_map.h"
|
||||
|
||||
#define MAP_WIDTH 28
|
||||
#define MAP_HEIGHT 15
|
||||
#define MAPCURSOR_X_MIN 1
|
||||
#define MAPCURSOR_Y_MIN 2
|
||||
#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
|
||||
#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
|
||||
|
||||
// Static type declarations
|
||||
|
||||
struct UnkStruct_0203A148 {
|
||||
|
@ -26,12 +33,12 @@ static u8 MoveRegionMapCursor_Full(void);
|
|||
static u8 ProcessRegionMapInput_Zoomed(void);
|
||||
static u8 MoveRegionMapCursor_Zoomed(void);
|
||||
void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation);
|
||||
void sub_81237B4(void);
|
||||
void UpdateRegionMapVideoRegs(void);
|
||||
void sub_81238AC(void);
|
||||
u8 get_flagnr_blue_points(u16 mapSecId);
|
||||
u16 sub_8123EB4(u16 mapSecId);
|
||||
void sub_8123FB0(void);
|
||||
u16 sub_812386C(u16 x, u16 y);
|
||||
u16 GetRegionMapSectionIdAt(u16 x, u16 y);
|
||||
void sub_812378C(s16 x, s16 y);
|
||||
void sub_8124238(void);
|
||||
void sub_81243B0(void);
|
||||
|
@ -39,11 +46,12 @@ void sub_81243DC(void);
|
|||
|
||||
// .rodata
|
||||
|
||||
extern const u8 gUnknown_0859F77C[];
|
||||
extern const u8 gUnknown_085A04E0[];
|
||||
extern const u16 gUnknown_0859F73C[];
|
||||
extern const u8 gUnknown_0859F60C[];
|
||||
extern const u8 gUnknown_0859F650[];
|
||||
extern const u16 gUnknown_0859F73C[];
|
||||
extern const u8 gUnknown_0859F77C[];
|
||||
extern const u8 gUnknown_085A04E0[];
|
||||
extern const u8 gUnknown_085A096C[];
|
||||
|
||||
// .text
|
||||
|
||||
|
@ -146,7 +154,7 @@ bool8 sub_8122DB0(void)
|
|||
break;
|
||||
case 7:
|
||||
sub_8123FB0();
|
||||
sub_81237B4();
|
||||
UpdateRegionMapVideoRegs();
|
||||
gRegionMap->cursorSprite = NULL;
|
||||
gRegionMap->playerIconSprite = NULL;
|
||||
gRegionMap->cursorMovementFrameCounter = 0;
|
||||
|
@ -202,22 +210,22 @@ static u8 ProcessRegionMapInput_Full(void)
|
|||
input = INPUT_EVENT_NONE;
|
||||
gRegionMap->cursorDeltaX = 0;
|
||||
gRegionMap->cursorDeltaY = 0;
|
||||
if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > 2)
|
||||
if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
|
||||
{
|
||||
gRegionMap->cursorDeltaY = -1;
|
||||
input = INPUT_EVENT_MOVE_START;
|
||||
}
|
||||
if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < 16)
|
||||
if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
|
||||
{
|
||||
gRegionMap->cursorDeltaY = +1;
|
||||
input = INPUT_EVENT_MOVE_START;
|
||||
}
|
||||
if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > 1)
|
||||
if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
|
||||
{
|
||||
gRegionMap->cursorDeltaX = -1;
|
||||
input = INPUT_EVENT_MOVE_START;
|
||||
}
|
||||
if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < 28)
|
||||
if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
|
||||
{
|
||||
gRegionMap->cursorDeltaX = +1;
|
||||
input = INPUT_EVENT_MOVE_START;
|
||||
|
@ -262,7 +270,7 @@ static u8 MoveRegionMapCursor_Full(void)
|
|||
{
|
||||
gRegionMap->cursorPosY --;
|
||||
}
|
||||
mapSecId = sub_812386C(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
|
||||
mapSecId = GetRegionMapSectionIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
|
||||
gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId);
|
||||
if (mapSecId != gRegionMap->mapSecId)
|
||||
{
|
||||
|
@ -335,7 +343,7 @@ static u8 MoveRegionMapCursor_Zoomed(void)
|
|||
{
|
||||
gRegionMap->unk_064 = x;
|
||||
gRegionMap->unk_066 = y;
|
||||
mapSecId = sub_812386C(x, y);
|
||||
mapSecId = GetRegionMapSectionIdAt(x, y);
|
||||
gRegionMap->unk_002 = get_flagnr_blue_points(mapSecId);
|
||||
if (mapSecId != gRegionMap->mapSecId)
|
||||
{
|
||||
|
@ -477,7 +485,7 @@ void sub_812378C(s16 x, s16 y)
|
|||
gRegionMap->needUpdateVideoRegs = TRUE;
|
||||
}
|
||||
|
||||
void sub_81237B4(void)
|
||||
void UpdateRegionMapVideoRegs(void)
|
||||
{
|
||||
if (gRegionMap->needUpdateVideoRegs)
|
||||
{
|
||||
|
@ -492,3 +500,25 @@ void sub_81237B4(void)
|
|||
gRegionMap->needUpdateVideoRegs = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8123824(s16 x, s16 y)
|
||||
{
|
||||
CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0);
|
||||
UpdateRegionMapVideoRegs();
|
||||
if (gRegionMap->playerIconSprite != NULL)
|
||||
{
|
||||
gRegionMap->playerIconSprite->pos2.x = -x;
|
||||
gRegionMap->playerIconSprite->pos2.y = -y;
|
||||
}
|
||||
}
|
||||
|
||||
u16 GetRegionMapSectionIdAt(u16 x, u16 y)
|
||||
{
|
||||
if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
|
||||
{
|
||||
return MAPSEC_NONE2;
|
||||
}
|
||||
y -= MAPCURSOR_Y_MIN;
|
||||
x -= MAPCURSOR_X_MIN;
|
||||
return gUnknown_085A096C[x + y * MAP_WIDTH];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue