through sub_8059250

This commit is contained in:
scnorton
2019-01-07 15:32:11 -05:00
parent b4f57a6c26
commit e1bd043bf3
9 changed files with 224 additions and 451 deletions
+1 -373
View File
@@ -5,378 +5,6 @@
.text
thumb_func_start sub_8059080
sub_8059080: @ 8059080
push {r4-r6,lr}
adds r4, r0, 0
lsls r1, 16
lsrs r3, r1, 16
adds r5, r3, 0
lsls r2, 24
lsrs r2, 24
adds r6, r2, 0
ldr r0, _080590A4 @ =0x0000027f
cmp r3, r0
bhi _080590A8
ldr r0, [r4, 0x10]
ldr r1, [r0, 0x14]
lsls r0, r3, 2
adds r0, r1
ldr r0, [r0]
adds r1, r2, 0
b _080590C8
.align 2, 0
_080590A4: .4byte 0x0000027f
_080590A8:
ldr r0, _080590B4 @ =0x000003ff
cmp r3, r0
bls _080590B8
movs r0, 0xFF
b _080590CC
.align 2, 0
_080590B4: .4byte 0x000003ff
_080590B8:
ldr r0, [r4, 0x14]
ldr r1, [r0, 0x14]
lsls r0, r5, 2
adds r0, r1
ldr r1, _080590D4 @ =0xfffff600
adds r0, r1
ldr r0, [r0]
adds r1, r6, 0
_080590C8:
bl sub_8058F1C
_080590CC:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_080590D4: .4byte 0xfffff600
thumb_func_end sub_8059080
thumb_func_start sub_80590D8
sub_80590D8: @ 80590D8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _08059144 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldr r1, _08059148 @ =0x00000898
adds r4, r0, r1
ldr r0, _0805914C @ =VMap
ldr r0, [r0]
mov r8, r0
ldr r0, _08059150 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r2, 0
ldrsh r6, [r0, r2]
movs r1, 0x2
ldrsh r0, [r0, r1]
adds r1, r0, 0
adds r1, 0xE
cmp r0, r1
bge _08059138
mov r12, r1
ldr r2, _08059154 @ =gBackupMapData
mov r9, r2
lsls r7, r6, 1
_0805910A:
adds r1, r6, 0
adds r3, r1, 0
adds r3, 0xF
adds r5, r0, 0x1
cmp r1, r3
bge _08059132
mov r2, r8
muls r2, r0
adds r0, r2, 0
lsls r0, 1
add r0, r9
adds r2, r7, r0
subs r1, r3, r1
_08059124:
ldrh r0, [r2]
strh r0, [r4]
adds r4, 0x2
adds r2, 0x2
subs r1, 0x1
cmp r1, 0
bne _08059124
_08059132:
adds r0, r5, 0
cmp r0, r12
blt _0805910A
_08059138:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08059144: .4byte gSaveBlock2Ptr
_08059148: .4byte 0x00000898
_0805914C: .4byte VMap
_08059150: .4byte gSaveBlock1Ptr
_08059154: .4byte gBackupMapData
thumb_func_end sub_80590D8
thumb_func_start sub_8059158
sub_8059158: @ 8059158
push {r4,lr}
movs r2, 0
movs r1, 0
ldr r0, _08059184 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldr r4, _08059188 @ =0x00000898
adds r3, r0, r4
ldr r4, _0805918C @ =0x000001ff
_08059168:
lsls r0, r1, 1
adds r0, r3, r0
ldrh r0, [r0]
orrs r2, r0
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, r4
bls _08059168
cmp r2, 0
beq _08059190
movs r0, 0
b _08059192
.align 2, 0
_08059184: .4byte gSaveBlock2Ptr
_08059188: .4byte 0x00000898
_0805918C: .4byte 0x000001ff
_08059190:
movs r0, 0x1
_08059192:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8059158
thumb_func_start sub_8059198
sub_8059198: @ 8059198
push {lr}
sub sp, 0x4
mov r1, sp
movs r0, 0
strh r0, [r1]
ldr r0, _080591B8 @ =gSaveBlock2Ptr
ldr r1, [r0]
ldr r0, _080591BC @ =0x00000898
adds r1, r0
ldr r2, _080591C0 @ =0x01000100
mov r0, sp
bl CpuSet
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080591B8: .4byte gSaveBlock2Ptr
_080591BC: .4byte 0x00000898
_080591C0: .4byte 0x01000100
thumb_func_end sub_8059198
thumb_func_start sub_80591C4
sub_80591C4: @ 80591C4
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0805923C @ =gSaveBlock2Ptr
ldr r0, [r0]
ldr r1, _08059240 @ =0x00000898
adds r4, r0, r1
bl sub_8059158
cmp r0, 0
bne _08059230
ldr r0, _08059244 @ =VMap
ldr r0, [r0]
mov r8, r0
ldr r0, _08059248 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r2, 0
ldrsh r6, [r0, r2]
movs r1, 0x2
ldrsh r0, [r0, r1]
adds r1, r0, 0
adds r1, 0xE
cmp r0, r1
bge _0805922C
mov r12, r1
ldr r2, _0805924C @ =gBackupMapData
mov r9, r2
lsls r7, r6, 1
_080591FE:
adds r1, r6, 0
adds r3, r1, 0
adds r3, 0xF
adds r5, r0, 0x1
cmp r1, r3
bge _08059226
mov r2, r8
muls r2, r0
adds r0, r2, 0
lsls r0, 1
add r0, r9
adds r2, r7, r0
subs r1, r3, r1
_08059218:
ldrh r0, [r4]
strh r0, [r2]
adds r4, 0x2
adds r2, 0x2
subs r1, 0x1
cmp r1, 0
bne _08059218
_08059226:
adds r0, r5, 0
cmp r0, r12
blt _080591FE
_0805922C:
bl sub_8059198
_08059230:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0805923C: .4byte gSaveBlock2Ptr
_08059240: .4byte 0x00000898
_08059244: .4byte VMap
_08059248: .4byte gSaveBlock1Ptr
_0805924C: .4byte gBackupMapData
thumb_func_end sub_80591C4
thumb_func_start sub_8059250
sub_8059250: @ 8059250
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
lsls r0, 24
lsrs r1, r0, 24
adds r2, r1, 0
ldr r0, _0805929C @ =gSaveBlock2Ptr
ldr r0, [r0]
ldr r3, _080592A0 @ =0x00000898
adds r3, r0, r3
str r3, [sp, 0x4]
ldr r0, _080592A4 @ =VMap
ldr r0, [r0]
str r0, [sp]
movs r4, 0
mov r9, r4
mov r8, r4
ldr r0, _080592A8 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r3, 0
ldrsh r6, [r0, r3]
str r6, [sp, 0x8]
movs r4, 0x2
ldrsh r5, [r0, r4]
movs r7, 0xF
movs r6, 0xE
mov r12, r6
cmp r1, 0x2
beq _080592B6
cmp r1, 0x2
bgt _080592AC
cmp r1, 0x1
beq _080592BE
b _080592D6
.align 2, 0
_0805929C: .4byte gSaveBlock2Ptr
_080592A0: .4byte 0x00000898
_080592A4: .4byte VMap
_080592A8: .4byte gSaveBlock1Ptr
_080592AC:
cmp r2, 0x3
beq _080592C8
cmp r2, 0x4
beq _080592D0
b _080592D6
_080592B6:
adds r5, 0x1
movs r0, 0xD
mov r12, r0
b _080592D6
_080592BE:
movs r1, 0x1
mov r8, r1
movs r3, 0xD
mov r12, r3
b _080592D6
_080592C8:
ldr r4, [sp, 0x8]
adds r4, 0x1
str r4, [sp, 0x8]
b _080592D4
_080592D0:
movs r6, 0x1
mov r9, r6
_080592D4:
movs r7, 0xE
_080592D6:
movs r1, 0
cmp r1, r12
bge _0805931A
ldr r0, _08059330 @ =gBackupMapData
mov r10, r0
_080592E0:
adds r4, r1, 0x1
cmp r7, 0
beq _08059314
adds r0, r1, r5
ldr r3, [sp]
adds r2, r3, 0
muls r2, r0
add r1, r8
lsls r0, r1, 4
subs r0, r1
add r0, r9
ldr r6, [sp, 0x8]
adds r2, r6, r2
adds r3, r7, 0
lsls r2, 1
add r2, r10
lsls r0, 1
ldr r6, [sp, 0x4]
adds r1, r0, r6
_08059306:
ldrh r0, [r1]
strh r0, [r2]
adds r1, 0x2
adds r2, 0x2
subs r3, 0x1
cmp r3, 0
bne _08059306
_08059314:
adds r1, r4, 0
cmp r1, r12
blt _080592E0
_0805931A:
bl sub_8059198
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08059330: .4byte gBackupMapData
thumb_func_end sub_8059250
thumb_func_start sub_8059334
sub_8059334: @ 8059334
push {r4-r7,lr}
@@ -686,7 +314,7 @@ CameraMove: @ 8059530
_08059570: .4byte gUnknown_2036E18
_08059574: .4byte gSaveBlock1Ptr
_08059578:
bl sub_80590D8
bl save_serialize_map
ldr r1, _080595F8 @ =gSaveBlock1Ptr
ldr r0, [r1]
movs r2, 0
+1 -1
View File
@@ -1109,7 +1109,7 @@ _0806F61E:
thumb_func_start sub_806F624
sub_806F624: @ 806F624
push {lr}
bl sub_80590D8
bl save_serialize_map
ldr r1, _0806F63C @ =gUnknown_3000FA4
ldr r0, _0806F640 @ =sub_806F7A8
str r0, [r1]
+60 -60
View File
@@ -132,11 +132,11 @@ sub_806FFB0: @ 806FFB0
sub_806FFBC: @ 806FFBC
push {r4,lr}
bl ResetTilesetAnimBuffer
ldr r2, _08070014 @ =gUnknown_3000FAE
ldr r2, _08070014 @ =sPrimaryTilesetCBCounter
ldrh r0, [r2]
adds r0, 0x1
strh r0, [r2]
ldr r1, _08070018 @ =gUnknown_3000FB0
ldr r1, _08070018 @ =sPrimaryTilesetCBBufferSize
lsls r0, 16
lsrs r0, 16
ldrh r1, [r1]
@@ -145,11 +145,11 @@ sub_806FFBC: @ 806FFBC
movs r0, 0
strh r0, [r2]
_0806FFDA:
ldr r4, _0807001C @ =gUnknown_3000FB2
ldr r4, _0807001C @ =sSecondaryTilesetCBCounter
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
ldr r1, _08070020 @ =gUnknown_3000FB4
ldr r1, _08070020 @ =sSecondaryTilesetCBBufferSize
lsls r0, 16
lsrs r0, 16
ldrh r1, [r1]
@@ -158,14 +158,14 @@ _0806FFDA:
movs r0, 0
strh r0, [r4]
_0806FFF2:
ldr r0, _08070024 @ =gUnknown_3000FB8
ldr r0, _08070024 @ =sPrimaryTilesetCB
ldr r1, [r0]
cmp r1, 0
beq _08070000
ldrh r0, [r2]
bl _call_via_r1
_08070000:
ldr r0, _08070028 @ =gUnknown_3000FBC
ldr r0, _08070028 @ =sSecondaryTilesetCB
ldr r1, [r0]
cmp r1, 0
beq _0807000E
@@ -176,23 +176,23 @@ _0807000E:
pop {r0}
bx r0
.align 2, 0
_08070014: .4byte gUnknown_3000FAE
_08070018: .4byte gUnknown_3000FB0
_0807001C: .4byte gUnknown_3000FB2
_08070020: .4byte gUnknown_3000FB4
_08070024: .4byte gUnknown_3000FB8
_08070028: .4byte gUnknown_3000FBC
_08070014: .4byte sPrimaryTilesetCBCounter
_08070018: .4byte sPrimaryTilesetCBBufferSize
_0807001C: .4byte sSecondaryTilesetCBCounter
_08070020: .4byte sSecondaryTilesetCBBufferSize
_08070024: .4byte sPrimaryTilesetCB
_08070028: .4byte sSecondaryTilesetCB
thumb_func_end sub_806FFBC
thumb_func_start cur_mapheader_run_tileset1_func
cur_mapheader_run_tileset1_func: @ 807002C
push {lr}
ldr r0, _08070058 @ =gUnknown_3000FAE
ldr r0, _08070058 @ =sPrimaryTilesetCBCounter
movs r1, 0
strh r1, [r0]
ldr r0, _0807005C @ =gUnknown_3000FB0
ldr r0, _0807005C @ =sPrimaryTilesetCBBufferSize
strh r1, [r0]
ldr r1, _08070060 @ =gUnknown_3000FB8
ldr r1, _08070060 @ =sPrimaryTilesetCB
movs r0, 0
str r0, [r1]
ldr r0, _08070064 @ =gMapHeader
@@ -208,21 +208,21 @@ _08070052:
pop {r0}
bx r0
.align 2, 0
_08070058: .4byte gUnknown_3000FAE
_0807005C: .4byte gUnknown_3000FB0
_08070060: .4byte gUnknown_3000FB8
_08070058: .4byte sPrimaryTilesetCBCounter
_0807005C: .4byte sPrimaryTilesetCBBufferSize
_08070060: .4byte sPrimaryTilesetCB
_08070064: .4byte gMapHeader
thumb_func_end cur_mapheader_run_tileset1_func
thumb_func_start cur_mapheader_run_tileset2_func
cur_mapheader_run_tileset2_func: @ 8070068
push {lr}
ldr r0, _08070094 @ =gUnknown_3000FB2
ldr r0, _08070094 @ =sSecondaryTilesetCBCounter
movs r1, 0
strh r1, [r0]
ldr r0, _08070098 @ =gUnknown_3000FB4
ldr r0, _08070098 @ =sSecondaryTilesetCBBufferSize
strh r1, [r0]
ldr r1, _0807009C @ =gUnknown_3000FBC
ldr r1, _0807009C @ =sSecondaryTilesetCB
movs r0, 0
str r0, [r1]
ldr r0, _080700A0 @ =gMapHeader
@@ -238,9 +238,9 @@ _0807008E:
pop {r0}
bx r0
.align 2, 0
_08070094: .4byte gUnknown_3000FB2
_08070098: .4byte gUnknown_3000FB4
_0807009C: .4byte gUnknown_3000FBC
_08070094: .4byte sSecondaryTilesetCBCounter
_08070098: .4byte sSecondaryTilesetCBBufferSize
_0807009C: .4byte sSecondaryTilesetCB
_080700A0: .4byte gMapHeader
thumb_func_end cur_mapheader_run_tileset2_func
@@ -342,22 +342,22 @@ _0807014C:
thumb_func_start sub_8070154
sub_8070154: @ 8070154
ldr r1, _0807016C @ =gUnknown_3000FAE
ldr r1, _0807016C @ =sPrimaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _08070170 @ =gUnknown_3000FB0
ldr r1, _08070170 @ =sPrimaryTilesetCBBufferSize
movs r2, 0xA0
lsls r2, 2
adds r0, r2, 0
strh r0, [r1]
ldr r1, _08070174 @ =gUnknown_3000FB8
ldr r1, _08070174 @ =sPrimaryTilesetCB
ldr r0, _08070178 @ =sub_8070120
str r0, [r1]
bx lr
.align 2, 0
_0807016C: .4byte gUnknown_3000FAE
_08070170: .4byte gUnknown_3000FB0
_08070174: .4byte gUnknown_3000FB8
_0807016C: .4byte sPrimaryTilesetCBCounter
_08070170: .4byte sPrimaryTilesetCBBufferSize
_08070174: .4byte sPrimaryTilesetCB
_08070178: .4byte sub_8070120
thumb_func_end sub_8070154
@@ -410,20 +410,20 @@ _080701D0:
thumb_func_start sub_80701D8
sub_80701D8: @ 80701D8
ldr r1, _080701EC @ =gUnknown_3000FB2
ldr r1, _080701EC @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _080701F0 @ =gUnknown_3000FB4
ldr r1, _080701F0 @ =sSecondaryTilesetCBBufferSize
movs r0, 0x78
strh r0, [r1]
ldr r1, _080701F4 @ =gUnknown_3000FBC
ldr r1, _080701F4 @ =sSecondaryTilesetCB
ldr r0, _080701F8 @ =sub_80701AC
str r0, [r1]
bx lr
.align 2, 0
_080701EC: .4byte gUnknown_3000FB2
_080701F0: .4byte gUnknown_3000FB4
_080701F4: .4byte gUnknown_3000FBC
_080701EC: .4byte sSecondaryTilesetCBCounter
_080701F0: .4byte sSecondaryTilesetCBBufferSize
_080701F4: .4byte sSecondaryTilesetCB
_080701F8: .4byte sub_80701AC
thumb_func_end sub_80701D8
@@ -474,20 +474,20 @@ _08070248:
thumb_func_start sub_8070250
sub_8070250: @ 8070250
ldr r1, _08070264 @ =gUnknown_3000FB2
ldr r1, _08070264 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _08070268 @ =gUnknown_3000FB4
ldr r1, _08070268 @ =sSecondaryTilesetCBBufferSize
movs r0, 0xA0
strh r0, [r1]
ldr r1, _0807026C @ =gUnknown_3000FBC
ldr r1, _0807026C @ =sSecondaryTilesetCB
ldr r0, _08070270 @ =sub_8070224
str r0, [r1]
bx lr
.align 2, 0
_08070264: .4byte gUnknown_3000FB2
_08070268: .4byte gUnknown_3000FB4
_0807026C: .4byte gUnknown_3000FBC
_08070264: .4byte sSecondaryTilesetCBCounter
_08070268: .4byte sSecondaryTilesetCBBufferSize
_0807026C: .4byte sSecondaryTilesetCB
_08070270: .4byte sub_8070224
thumb_func_end sub_8070250
@@ -531,22 +531,22 @@ _080702B0:
thumb_func_start sub_80702B4
sub_80702B4: @ 80702B4
ldr r1, _080702CC @ =gUnknown_3000FB2
ldr r1, _080702CC @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _080702D0 @ =gUnknown_3000FB4
ldr r1, _080702D0 @ =sSecondaryTilesetCBBufferSize
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
ldr r1, _080702D4 @ =gUnknown_3000FBC
ldr r1, _080702D4 @ =sSecondaryTilesetCB
ldr r0, _080702D8 @ =sub_807029C
str r0, [r1]
bx lr
.align 2, 0
_080702CC: .4byte gUnknown_3000FB2
_080702D0: .4byte gUnknown_3000FB4
_080702D4: .4byte gUnknown_3000FBC
_080702CC: .4byte sSecondaryTilesetCBCounter
_080702D0: .4byte sSecondaryTilesetCBBufferSize
_080702D4: .4byte sSecondaryTilesetCB
_080702D8: .4byte sub_807029C
thumb_func_end sub_80702B4
@@ -589,20 +589,20 @@ _08070318:
thumb_func_start sub_807031C
sub_807031C: @ 807031C
ldr r1, _08070330 @ =gUnknown_3000FB2
ldr r1, _08070330 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _08070334 @ =gUnknown_3000FB4
ldr r1, _08070334 @ =sSecondaryTilesetCBBufferSize
movs r0, 0xF0
strh r0, [r1]
ldr r1, _08070338 @ =gUnknown_3000FBC
ldr r1, _08070338 @ =sSecondaryTilesetCB
ldr r0, _0807033C @ =sub_8070304
str r0, [r1]
bx lr
.align 2, 0
_08070330: .4byte gUnknown_3000FB2
_08070334: .4byte gUnknown_3000FB4
_08070338: .4byte gUnknown_3000FBC
_08070330: .4byte sSecondaryTilesetCBCounter
_08070334: .4byte sSecondaryTilesetCBBufferSize
_08070338: .4byte sSecondaryTilesetCB
_0807033C: .4byte sub_8070304
thumb_func_end sub_807031C
@@ -645,22 +645,22 @@ _0807037C:
thumb_func_start sub_8070380
sub_8070380: @ 8070380
ldr r1, _08070398 @ =gUnknown_3000FB2
ldr r1, _08070398 @ =sSecondaryTilesetCBCounter
movs r0, 0
strh r0, [r1]
ldr r1, _0807039C @ =gUnknown_3000FB4
ldr r1, _0807039C @ =sSecondaryTilesetCBBufferSize
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
ldr r1, _080703A0 @ =gUnknown_3000FBC
ldr r1, _080703A0 @ =sSecondaryTilesetCB
ldr r0, _080703A4 @ =sub_8070368
str r0, [r1]
bx lr
.align 2, 0
_08070398: .4byte gUnknown_3000FB2
_0807039C: .4byte gUnknown_3000FB4
_080703A0: .4byte gUnknown_3000FBC
_08070398: .4byte sSecondaryTilesetCBCounter
_0807039C: .4byte sSecondaryTilesetCBBufferSize
_080703A0: .4byte sSecondaryTilesetCB
_080703A4: .4byte sub_8070368
thumb_func_end sub_8070380
+7 -1
View File
@@ -3,6 +3,12 @@
#include "global.h"
#define NUM_TILES_IN_PRIMARY 512
#define NUM_TILES_TOTAL 1024
#define NUM_METATILES_IN_PRIMARY 512
#define NUM_METATILES_TOTAL 1024
#define NUM_PALS_IN_PRIMARY 6
#define NUM_PALS_TOTAL 13
#define VIRTUAL_MAP_SIZE 0x2800
extern struct MapCoords {
@@ -18,6 +24,6 @@ void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(s16, s16);
bool32 CanCameraMoveInDirection(u8);
u16 GetBehaviorByMetatileId(u16 metatileId);
u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr);
#endif //GUARD_FIELDMAP_H
+1 -1
View File
@@ -51,8 +51,8 @@ struct Tileset
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
/*0x0c*/ void *metatiles;
/*0x10*/ void *metatileAttributes;
/*0x14*/ TilesetCB callback;
/*0x10*/ void *metatileAttributes;
};
struct MapData
+2 -1
View File
@@ -328,7 +328,8 @@ struct SaveBlock2
/*0x0AC*/ u8 filler_AC[0x3F4];
/*0x4A0*/ u32 unk_4A0[0x2F];
/*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C;
/*0x574*/ u8 filler_574[0x524];
/*0x574*/ u8 filler_574[0x324];
/*0x898*/ u16 mapView[0x100];
/*0xA98*/ struct LinkBattleRecords linkBattleRecords;
/*0xAF0*/ struct BerryCrush berryCrush;
/*0xB00*/ u8 filler_B00[0x420];
+144 -6
View File
@@ -18,8 +18,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
u32 sub_8059080(struct MapData *mapData, u16 metatileId, u8 z);
void sub_80591C4(void);
void LoadSavedMapView(void);
struct BackupMapData VMap;
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
@@ -64,7 +63,7 @@ void not_trainer_hill_battle_pyramid(void)
void sub_80589E8(void)
{
sub_8058A00(&gMapHeader);
sub_80591C4();
LoadSavedMapView();
mapheader_run_script_with_tag_x1();
}
@@ -453,7 +452,7 @@ u32 sub_8058F1C(u32 original, u8 bit)
u32 sub_8058F48(s16 x, s16 y, u8 z)
{
u16 metatileId = MapGridGetMetatileIdAt(x, y);
return sub_8059080(gMapHeader.mapData, metatileId, z);
return GetBehaviorByMetatileIdAndMapData(gMapHeader.mapData, metatileId, z);
}
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
@@ -468,7 +467,7 @@ u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y)
void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
{
int i;
s32 i;
if (x >= 0 && x < VMap.Xsize
&& y >= 0 && y < VMap.Ysize)
{
@@ -479,7 +478,7 @@ void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile)
{
int i;
s32 i;
if (x >= 0 && x < VMap.Xsize
&& y >= 0 && y < VMap.Ysize)
{
@@ -503,3 +502,142 @@ void sub_8059024(s32 x, s32 y, bool32 arg2)
}
}
}
u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr)
{
u32 * attributes;
if (metatile < 0x280)
{
attributes = mapData->primaryTileset->metatileAttributes;
return sub_8058F1C(attributes[metatile], attr);
}
else if (metatile < 0x400)
{
attributes = mapData->secondaryTileset->metatileAttributes;
return sub_8058F1C(attributes[metatile - 0x280], attr);
}
else
{
return 0xFF;
}
}
void save_serialize_map(void)
{
s32 i, j;
s32 x, y;
u16 *mapView;
s32 width;
mapView = gSaveBlock2Ptr->mapView;
width = VMap.Xsize;
x = gSaveBlock1Ptr->pos.x;
y = gSaveBlock1Ptr->pos.y;
for (i = y; i < y + 14; i++)
{
for (j = x; j < x + 15; j++)
{
*mapView++ = gBackupMapData[width * i + j];
}
}
}
bool32 SavedMapViewIsEmpty(void)
{
u16 i;
u32 marker = 0;
// BUG: This loop extends past the bounds of the mapView array. Its size is only 0x100.
for (i = 0; i < 0x200; i++)
marker |= gSaveBlock2Ptr->mapView[i];
if (marker == 0)
return TRUE;
else
return FALSE;
}
void ClearSavedMapView(void)
{
CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView));
}
void LoadSavedMapView(void)
{
s32 i, j;
s32 x, y;
u16 *mapView;
s32 width;
mapView = gSaveBlock2Ptr->mapView;
if (!SavedMapViewIsEmpty())
{
width = VMap.Xsize;
x = gSaveBlock1Ptr->pos.x;
y = gSaveBlock1Ptr->pos.y;
for (i = y; i < y + 14; i++)
{
for (j = x; j < x + 15; j++)
{
gBackupMapData[j + width * i] = *mapView;
mapView++;
}
}
ClearSavedMapView();
}
}
void sub_8059250(u8 a1)
{
s32 width;
u16 *mapView;
s32 x0, y0;
s32 x2, y2;
u16 *src, *dest;
s32 srci, desti;
s32 r9, r8;
s32 x, y;
s32 i, j;
mapView = gSaveBlock2Ptr->mapView;
width = VMap.Xsize;
r9 = 0;
r8 = 0;
x0 = gSaveBlock1Ptr->pos.x;
y0 = gSaveBlock1Ptr->pos.y;
x2 = 15;
y2 = 14;
switch (a1)
{
case CONNECTION_NORTH:
y0 += 1;
y2 = 13;
break;
case CONNECTION_SOUTH:
r8 = 1;
y2 = 13;
break;
case CONNECTION_WEST:
x0 += 1;
x2 = 14;
break;
case CONNECTION_EAST:
r9 = 1;
x2 = 14;
break;
}
for (y = 0; y < y2; y++)
{
i = 0;
j = 0;
for (x = 0; x < x2; x++)
{
desti = width * (y + y0);
srci = (y + r8) * 15 + r9;
src = &mapView[srci + i];
dest = &gBackupMapData[x0 + desti + j];
*dest = *src;
i++;
j++;
}
}
ClearSavedMapView();
}
+2 -2
View File
@@ -69,7 +69,7 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] =
extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
extern void sub_800AB9C(void); // link
extern bool8 sub_800A4BC(void); // link
extern void sub_80590D8(void); // fieldmap
extern void save_serialize_map(void); // fieldmap
extern void sub_804C1C0(void); // load_save
extern void sav2_gender2_inplace_and_xFE(void); // load_save
@@ -867,7 +867,7 @@ void sub_80DA634(u8 taskId)
case 2:
if (sub_800A4BC())
{
sub_80590D8();
save_serialize_map();
gTasks[taskId].data[0] = 3;
}
break;
+6 -6
View File
@@ -111,22 +111,22 @@ gUnknown_3000FA9: @ 3000FA9
gUnknown_3000FAC: @ 3000FAC
.space 0x2
gUnknown_3000FAE: @ 3000FAE
sPrimaryTilesetCBCounter: @ 3000FAE
.space 0x2
gUnknown_3000FB0: @ 3000FB0
sPrimaryTilesetCBBufferSize: @ 3000FB0
.space 0x2
gUnknown_3000FB2: @ 3000FB2
sSecondaryTilesetCBCounter: @ 3000FB2
.space 0x2
gUnknown_3000FB4: @ 3000FB4
sSecondaryTilesetCBBufferSize: @ 3000FB4
.space 0x4
gUnknown_3000FB8: @ 3000FB8
sPrimaryTilesetCB: @ 3000FB8
.space 0x4
gUnknown_3000FBC: @ 3000FBC
sSecondaryTilesetCB: @ 3000FBC
.space 0x4
.include "src/sound.o"