Improve LayerStruct

This commit is contained in:
octorock
2022-03-05 11:43:58 +01:00
parent d18fed1fb9
commit d6bbbf2db6
67 changed files with 720 additions and 1213 deletions
+4 -4
View File
@@ -24,7 +24,7 @@ _08019694: .4byte gMenu
thumb_func_start sub_08019698
sub_08019698: @ 0x08019698
push {r4, r5, lr}
ldr r0, _08019724 @ =gUnk_02032EC0
ldr r0, _08019724 @ =gUI
ldrb r1, [r0, #3]
lsls r0, r1, #3
subs r0, r0, r1
@@ -86,7 +86,7 @@ _08019700:
strb r0, [r1]
pop {r4, r5, pc}
.align 2, 0
_08019724: .4byte gUnk_02032EC0
_08019724: .4byte gUI
_08019728: .4byte gUnk_080B4410
_0801972C: .4byte gRoomControls
_08019730: .4byte gUpdateVisibleTiles
@@ -3232,7 +3232,7 @@ _0801AEB6:
ldr r0, [r1]
cmp r0, #0
beq _0801AED0
ldr r0, _0801AF00 @ =gUnk_02019EE0
ldr r0, _0801AF00 @ =gMapDataBottomSpecial
bl sub_0801AB08
_0801AED0:
ldr r1, _0801AF04 @ =gMapTop
@@ -3251,7 +3251,7 @@ _0801AEF0: .4byte gUnk_03004030
_0801AEF4: .4byte 0x0000088C
_0801AEF8: .4byte 0x00000888
_0801AEFC: .4byte gMapBottom
_0801AF00: .4byte gUnk_02019EE0
_0801AF00: .4byte gMapDataBottomSpecial
_0801AF04: .4byte gMapTop
_0801AF08: .4byte gMapDataTopSpecial
_0801AF0C:
+2 -2
View File
@@ -26,7 +26,7 @@ sub_0804AB70: @ 0x0804AB70
ldrb r5, [r0, #0x17]
cmp r5, #2
bne _0804ABA4
ldr r0, _0804AC08 @ =gUnk_02032EC0
ldr r0, _0804AC08 @ =gUI
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #2
@@ -72,7 +72,7 @@ _0804ABF8: .4byte gScreen
_0804ABFC: .4byte 0x00009E83
_0804AC00: .4byte gRoomControls
_0804AC04: .4byte gArea
_0804AC08: .4byte gUnk_02032EC0
_0804AC08: .4byte gUI
_0804AC0C: .4byte gUnk_080D4138
_0804AC10: .4byte gUnk_02017700
_0804AC14: .4byte gUsedPalettes
+3 -3
View File
@@ -54,12 +54,12 @@
map_data \src_offset, gMapDataTopSpecial, \size, \compressed, \terminator
.endm
.macro map_unknown src_offset, size, compressed, terminator=0
.macro collision_bottom src_offset, size, compressed, terminator=0
map_data \src_offset, gUnk_02027EB4, \size, \compressed, \terminator
.endm
.macro map_unknown_2 src_offset, size, compressed, terminator=0
map_data \src_offset, gUnk_02019EE0, \size, \compressed, \terminator
.macro map_bottom_special src_offset, size, compressed, terminator=0
map_data \src_offset, gMapDataBottomSpecial, \size, \compressed, \terminator
.endm
+2 -2
View File
@@ -30,7 +30,7 @@ _08081E9A:
ldrh r0, [r1]
lsl r0, r0, #3
add r3, r3, r0
ldr r2, _08081EF8 @ =gUnk_02019EE0
ldr r2, _08081EF8 @ =gMapDataBottomSpecial
cmp r5, #2
bne _08081EB4
ldr r2, _08081EFC @ =gMapDataTopSpecial
@@ -64,5 +64,5 @@ _08081EE8:
_08081EEC: .4byte 0x00003FFF
_08081EF0: .4byte 0x00007004
_08081EF4: .4byte 0x00006004
_08081EF8: .4byte gUnk_02019EE0
_08081EF8: .4byte gMapDataBottomSpecial
_08081EFC: .4byte gMapDataTopSpecial
@@ -20,7 +20,7 @@ _0801DDB8:
lsls r0, r4, #2
adds r0, r0, r1
ldr r4, [r0]
ldr r0, _0801DDE0 @ =gUnk_02019EE0
ldr r0, _0801DDE0 @ =gMapDataBottomSpecial
movs r1, #0x80
lsls r1, r1, #8
bl MemClear
@@ -28,7 +28,7 @@ _0801DDB8:
.align 2, 0
_0801DDD8: .4byte gUnk_080C9C50
_0801DDDC: .4byte gArea
_0801DDE0: .4byte gUnk_02019EE0
_0801DDE0: .4byte gMapDataBottomSpecial
_0801DDE4:
ldrb r0, [r4]
ldrb r1, [r4, #1]
@@ -41,7 +41,7 @@ _0801DDE4:
movs r0, #0
str r0, [sp, #0xc]
ldrh r2, [r4]
ldr r0, _0801DE14 @ =gUnk_02032EC0
ldr r0, _0801DE14 @ =gUI
ldrh r3, [r0, #0x20]
ldr r1, _0801DE18 @ =0x0000FFFF
ands r1, r2
@@ -52,7 +52,7 @@ _0801DDE4:
movs r3, #8
b _0801DE36
.align 2, 0
_0801DE14: .4byte gUnk_02032EC0
_0801DE14: .4byte gUI
_0801DE18: .4byte 0x0000FFFF
_0801DE1C:
bl HasDungeonSmallKey
@@ -89,7 +89,7 @@ _0801DE46:
ldr r1, _0801DEFC @ =gMapData
adds r0, r0, r1
str r0, [r2]
ldr r0, _0801DF00 @ =gUnk_02019EE0
ldr r0, _0801DF00 @ =gMapDataBottomSpecial
str r0, [r2, #4]
ldr r0, _0801DF04 @ =0x84000100
str r0, [r2, #8]
@@ -127,7 +127,7 @@ _0801DEA0:
ldr r3, [sp, #8]
adds r1, r6, #0
muls r1, r3, r1
ldr r0, _0801DF00 @ =gUnk_02019EE0
ldr r0, _0801DF00 @ =gMapDataBottomSpecial
adds r1, r1, r0
mov r8, r1
movs r5, #0
@@ -172,7 +172,7 @@ _0801DEEA:
.align 2, 0
_0801DEF8: .4byte 0x040000D4
_0801DEFC: .4byte gMapData
_0801DF00: .4byte gUnk_02019EE0
_0801DF00: .4byte gMapDataBottomSpecial
_0801DF04: .4byte 0x84000100
_0801DF08: .4byte gAreaRoomHeaders
_0801DF0C: .4byte 0x000007FF
+4 -4
View File
@@ -2,7 +2,7 @@
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r0, _08050F40 @ =gUnk_02019EE0
ldr r0, _08050F40 @ =gMapDataBottomSpecial
ldrb r1, [r0]
adds r6, r0, #0
cmp r1, #0
@@ -38,7 +38,7 @@ _08050F1E:
beq _08050F82
b _08050F8E
.align 2, 0
_08050F40: .4byte gUnk_02019EE0
_08050F40: .4byte gMapDataBottomSpecial
_08050F44: .4byte 0x000004B4
_08050F48: .4byte gMenu
_08050F4C: .4byte gInput
@@ -107,12 +107,12 @@ _08050FAC:
_08050FBA:
adds r0, r5, #0
bl SetMenuType
ldr r0, _08050FCC @ =gUnk_02019EE0
ldr r0, _08050FCC @ =gMapDataBottomSpecial
ldrb r0, [r0, #6]
bl SetActiveSave
b _08050FF4
.align 2, 0
_08050FCC: .4byte gUnk_02019EE0
_08050FCC: .4byte gMapDataBottomSpecial
_08050FD0:
mov r1, ip
ldrb r0, [r1, #1]
+2 -2
View File
@@ -1,6 +1,6 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r1, _08051768 @ =gUnk_02019EE0
ldr r1, _08051768 @ =gMapDataBottomSpecial
movs r0, #4
strb r0, [r1, #7]
movs r4, #0
@@ -25,7 +25,7 @@ _0805174C:
ands r2, r0
b _08051774
.align 2, 0
_08051768: .4byte gUnk_02019EE0
_08051768: .4byte gMapDataBottomSpecial
_0805176C: .4byte gUnk_02000090
_08051770:
adds r4, #1
+2 -2
View File
@@ -1,6 +1,6 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r0, _080510E4 @ =gUnk_02019EE0
ldr r0, _080510E4 @ =gMapDataBottomSpecial
ldrb r0, [r0]
cmp r0, #0
beq _080510C4
@@ -24,7 +24,7 @@ _080510DC:
beq _080511B8
b _08051100
.align 2, 0
_080510E4: .4byte gUnk_02019EE0
_080510E4: .4byte gMapDataBottomSpecial
_080510E8: .4byte gInput
_080510EC:
movs r0, #0x80
+2 -2
View File
@@ -10,7 +10,7 @@
movs r0, #0x1e
strh r0, [r1, #0xa]
strb r4, [r1, #0x10]
ldr r0, _080537E0 @ =gUnk_02032EC0
ldr r0, _080537E0 @ =gUI
strb r3, [r0, #6]
ldr r0, _080537E4 @ =gMapBottom
str r2, [r0]
@@ -61,7 +61,7 @@
pop {r4, pc}
.align 2, 0
_080537DC: .4byte gMenu
_080537E0: .4byte gUnk_02032EC0
_080537E0: .4byte gUI
_080537E4: .4byte gMapBottom
_080537E8: .4byte gMapTop
_080537EC: .4byte gRoomControls
+2 -2
View File
@@ -1,6 +1,6 @@
.syntax unified
push {r4, lr}
ldr r4, _080548DC @ =gUnk_02032EC0
ldr r4, _080548DC @ =gUI
ldrb r1, [r4, #3]
lsls r0, r1, #2
adds r0, r0, r1
@@ -34,7 +34,7 @@
bl sub_080548E8
pop {r4, pc}
.align 2, 0
_080548DC: .4byte gUnk_02032EC0
_080548DC: .4byte gUI
_080548E0: .4byte gUnk_080FE320
_080548E4: .4byte gMenu
.syntax divided
+4 -4
View File
@@ -10,7 +10,7 @@
ldrb r0, [r0, #7]
cmp r0, #0
beq _08054954
ldr r0, _08054950 @ =gUnk_02032EC0
ldr r0, _08054950 @ =gUI
ldrb r1, [r0, #3]
movs r0, #0xa
bl MenuFadeIn
@@ -18,9 +18,9 @@
.align 2, 0
_08054948: .4byte gUnk_080C9CBC
_0805494C: .4byte gFuseInfo
_08054950: .4byte gUnk_02032EC0
_08054950: .4byte gUI
_08054954:
ldr r1, _08054964 @ =gUnk_02032EC0
ldr r1, _08054964 @ =gUI
movs r0, #3
strb r0, [r1]
movs r0, #7
@@ -29,5 +29,5 @@ _08054954:
_08054962:
pop {pc}
.align 2, 0
_08054964: .4byte gUnk_02032EC0
_08054964: .4byte gUI
.syntax divided
+2 -2
View File
@@ -57,7 +57,7 @@ _080549CE:
bne _080549F4
bl TryLoadPrologueHyruleTown
_080549F4:
ldr r0, _08054A10 @ =gUnk_02032EC0
ldr r0, _08054A10 @ =gUI
ldrb r0, [r0, #3]
bl sub_08018710
pop {r4, r5, r6, pc}
@@ -66,5 +66,5 @@ _08054A00: .4byte gUpdateVisibleTiles
_08054A04: .4byte gScreen
_08054A08: .4byte 0x00001FFF
_08054A0C: .4byte gRoomControls
_08054A10: .4byte gUnk_02032EC0
_08054A10: .4byte gUI
.syntax divided
+6 -6
View File
@@ -19,7 +19,7 @@
movs r1, #0x80
lsls r1, r1, #5
bl MemClear
ldr r0, _0807C160 @ =gUnk_02019EE0
ldr r0, _0807C160 @ =gMapDataBottomSpecial
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
@@ -56,7 +56,7 @@
.align 2, 0
_0807C158: .4byte gRoomControls
_0807C15C: .4byte gMapDataTop
_0807C160: .4byte gUnk_02019EE0
_0807C160: .4byte gMapDataBottomSpecial
_0807C164: .4byte gMapDataTopSpecial
_0807C168: .4byte gArea
_0807C16C: .4byte 0x0000085C
@@ -204,7 +204,7 @@ _0807C2A0:
mov r3, sb
cmp r3, #0
bne _0807C2E4
ldr r0, _0807C2DC @ =gUnk_02019EE0
ldr r0, _0807C2DC @ =gMapDataBottomSpecial
adds r1, r4, #0
bl sub_0801AB08
ldr r0, _0807C2E0 @ =gMapDataTopSpecial
@@ -216,10 +216,10 @@ _0807C2CC: .4byte gUnk_02027EB4
_0807C2D0: .4byte gUnk_0200D654
_0807C2D4: .4byte gMapBottom
_0807C2D8: .4byte gMapTop
_0807C2DC: .4byte gUnk_02019EE0
_0807C2DC: .4byte gMapDataBottomSpecial
_0807C2E0: .4byte gMapDataTopSpecial
_0807C2E4:
ldr r4, _0807C34C @ =gUnk_02019EE0
ldr r4, _0807C34C @ =gMapDataBottomSpecial
movs r0, #0x80
lsls r0, r0, #7
adds r5, r4, r0
@@ -269,7 +269,7 @@ _0807C33A:
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807C34C: .4byte gUnk_02019EE0
_0807C34C: .4byte gMapDataBottomSpecial
_0807C350: .4byte gMapDataTopSpecial
_0807C354: .4byte _0807C358
_0807C358: @ jump table
@@ -1,135 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
ldr r0, _0807B3A0 @ =0x000007FF
cmp r5, r0
bhi _0807B410
adds r0, r4, #0
adds r1, r6, #0
bl DeleteLoadedTileEntity
adds r0, r6, #0
bl GetLayerByIndex
adds r2, r0, #0
lsls r1, r5, #1
ldr r3, _0807B3A4 @ =0x00006004
adds r0, r2, r3
adds r0, r0, r1
ldrh r0, [r0]
mov ip, r0
lsls r1, r4, #1
adds r0, r2, #4
adds r0, r0, r1
mov r1, ip
strh r1, [r0]
ldr r0, _0807B3A8 @ =gUnk_080B3E80
adds r0, r5, r0
ldrb r3, [r0]
ldr r1, _0807B3AC @ =0x00002004
adds r0, r2, r1
adds r0, r0, r4
strb r3, [r0]
ldr r7, _0807B3B0 @ =gRoomControls
ldrb r1, [r7, #0xf]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807B36C
ldr r0, _0807B3B4 @ =gMapBottom
ldr r1, _0807B3AC @ =0x00002004
adds r0, r0, r1
adds r0, r4, r0
strb r3, [r0]
_0807B36C:
ldr r3, _0807B3B8 @ =0x0000B004
adds r1, r2, r3
adds r1, r1, r4
ldr r0, _0807B3BC @ =gUnk_080B37A0
adds r0, r5, r0
ldrb r0, [r0]
strb r0, [r1]
ldrb r1, [r7, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807B430
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r6, #2
beq _0807B3C4
lsls r1, r1, #1
ldr r0, _0807B3C0 @ =gUnk_02019EE0
b _0807B3C8
.align 2, 0
_0807B3A0: .4byte 0x000007FF
_0807B3A4: .4byte 0x00006004
_0807B3A8: .4byte gUnk_080B3E80
_0807B3AC: .4byte 0x00002004
_0807B3B0: .4byte gRoomControls
_0807B3B4: .4byte gMapBottom
_0807B3B8: .4byte 0x0000B004
_0807B3BC: .4byte gUnk_080B37A0
_0807B3C0: .4byte gUnk_02019EE0
_0807B3C4:
lsls r1, r1, #1
ldr r0, _0807B400 @ =gMapDataTopSpecial
_0807B3C8:
adds r3, r1, r0
mov r1, ip
lsls r0, r1, #3
ldr r1, _0807B404 @ =0x00007004
adds r0, r0, r1
adds r0, r2, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807B408 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807B430
ldr r1, _0807B40C @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
b _0807B430
.align 2, 0
_0807B400: .4byte gMapDataTopSpecial
_0807B404: .4byte 0x00007004
_0807B408: .4byte gRoomControls
_0807B40C: .4byte gUpdateVisibleTiles
_0807B410:
ldr r0, _0807B424 @ =0x00003FFF
cmp r5, r0
bls _0807B428
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl SetTile
b _0807B430
.align 2, 0
_0807B424: .4byte 0x00003FFF
_0807B428:
adds r0, r4, #0
adds r1, r6, #0
bl sub_0807BA8C
_0807B430:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -1,99 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
adds r4, r1, #0
adds r6, r2, #0
adds r0, r4, #0
adds r1, r6, #0
bl DeleteLoadedTileEntity
adds r0, r6, #0
bl GetLayerByIndex
adds r5, r0, #0
lsls r1, r4, #1
adds r0, r5, #4
adds r0, r0, r1
strh r7, [r0]
lsls r1, r7, #1
ldr r2, _0807BA24 @ =0x00005004
adds r0, r5, r2
adds r0, r0, r1
ldrh r2, [r0]
ldr r0, _0807BA28 @ =0x00002004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BA2C @ =gUnk_080B3E80
adds r0, r2, r0
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _0807BA30 @ =0x0000B004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BA34 @ =gUnk_080B37A0
adds r2, r2, r0
ldrb r0, [r2]
strb r0, [r1]
ldr r0, _0807BA38 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807BA78
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r6, #2
beq _0807BA40
lsls r1, r1, #1
ldr r0, _0807BA3C @ =gUnk_02019EE0
b _0807BA44
.align 2, 0
_0807BA24: .4byte 0x00005004
_0807BA28: .4byte 0x00002004
_0807BA2C: .4byte gUnk_080B3E80
_0807BA30: .4byte 0x0000B004
_0807BA34: .4byte gUnk_080B37A0
_0807BA38: .4byte gRoomControls
_0807BA3C: .4byte gUnk_02019EE0
_0807BA40:
lsls r1, r1, #1
ldr r0, _0807BA7C @ =gMapDataTopSpecial
_0807BA44:
adds r3, r1, r0
lsls r0, r7, #3
ldr r1, _0807BA80 @ =0x00007004
adds r0, r0, r1
adds r0, r5, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807BA84 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807BA78
ldr r1, _0807BA88 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807BA78:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BA7C: .4byte gMapDataTopSpecial
_0807BA80: .4byte 0x00007004
_0807BA84: .4byte gRoomControls
_0807BA88: .4byte gUpdateVisibleTiles
.syntax divided
@@ -1,101 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r7, r1, #0
bl DeleteLoadedTileEntity
adds r0, r7, #0
bl GetLayerByIndex
adds r5, r0, #0
lsls r2, r4, #1
adds r1, r5, #4
adds r1, r1, r2
ldr r3, _0807BAFC @ =0x00003004
adds r0, r5, r3
adds r0, r0, r2
ldrh r6, [r0]
strh r6, [r1]
lsls r1, r6, #1
ldr r2, _0807BB00 @ =0x00005004
adds r0, r5, r2
adds r0, r0, r1
ldrh r2, [r0]
ldr r3, _0807BB04 @ =0x00002004
adds r1, r5, r3
adds r1, r1, r4
ldr r0, _0807BB08 @ =gUnk_080B3E80
adds r0, r2, r0
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _0807BB0C @ =0x0000B004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BB10 @ =gUnk_080B37A0
adds r2, r2, r0
ldrb r0, [r2]
strb r0, [r1]
ldr r0, _0807BB14 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807BB54
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r7, #2
beq _0807BB1C
lsls r1, r1, #1
ldr r0, _0807BB18 @ =gUnk_02019EE0
b _0807BB20
.align 2, 0
_0807BAFC: .4byte 0x00003004
_0807BB00: .4byte 0x00005004
_0807BB04: .4byte 0x00002004
_0807BB08: .4byte gUnk_080B3E80
_0807BB0C: .4byte 0x0000B004
_0807BB10: .4byte gUnk_080B37A0
_0807BB14: .4byte gRoomControls
_0807BB18: .4byte gUnk_02019EE0
_0807BB1C:
lsls r1, r1, #1
ldr r0, _0807BB58 @ =gMapDataTopSpecial
_0807BB20:
adds r3, r1, r0
lsls r0, r6, #3
ldr r1, _0807BB5C @ =0x00007004
adds r0, r0, r1
adds r0, r5, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807BB60 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807BB54
ldr r1, _0807BB64 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807BB54:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BB58: .4byte gMapDataTopSpecial
_0807BB5C: .4byte 0x00007004
_0807BB60: .4byte gRoomControls
_0807BB64: .4byte gUpdateVisibleTiles
.syntax divided
@@ -1,73 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r1, _0807BD04 @ =gRoomControls
ldrh r0, [r1, #0x1e]
lsrs r2, r0, #4
mov r8, r1
cmp r2, #0x40
bne _0807BC98
movs r2, #0x3f
_0807BC98:
ldr r1, _0807BD08 @ =gUnk_02027EB4
adds r3, r2, r1
adds r6, r1, #0
adds r6, #0x3f
ldr r0, _0807BD0C @ =gUnk_0200D654
adds r2, r2, r0
adds r5, r0, #0
adds r5, #0x3f
movs r4, #0
adds r7, r1, #0
mov ip, r0
movs r0, #0xff
_0807BCB0:
strb r0, [r3]
strb r0, [r6]
strb r0, [r2]
strb r0, [r5]
adds r3, #0x40
adds r6, #0x40
adds r2, #0x40
adds r5, #0x40
adds r4, #1
cmp r4, #0x3f
bls _0807BCB0
mov r0, r8
ldrh r1, [r0, #0x20]
ldr r0, _0807BD10 @ =0x0000FFF0
ands r0, r1
lsls r0, r0, #2
adds r3, r0, r7
movs r1, #0xfc
lsls r1, r1, #4
adds r6, r7, r1
mov r1, ip
adds r2, r0, r1
movs r5, #0xfc
lsls r5, r5, #4
add r5, ip
movs r4, #0
movs r0, #0xff
_0807BCE6:
strb r0, [r3]
adds r3, #1
strb r0, [r6]
adds r6, #1
strb r0, [r2]
adds r2, #1
strb r0, [r5]
adds r5, #1
adds r4, #1
cmp r4, #0x3f
bls _0807BCE6
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BD04: .4byte gRoomControls
_0807BD08: .4byte gUnk_02027EB4
_0807BD0C: .4byte gUnk_0200D654
_0807BD10: .4byte 0x0000FFF0
.syntax divided
@@ -1,159 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r3, r0, #0
movs r5, #0xff
movs r0, #7
ands r1, r0
cmp r1, #7
bls _0807BDC8
b _0807BEE2
_0807BDC8:
lsls r0, r1, #2
ldr r1, _0807BDD4 @ =_0807BDD8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807BDD4: .4byte _0807BDD8
_0807BDD8: @ jump table
.4byte _0807BDF8 @ case 0
.4byte _0807BE10 @ case 1
.4byte _0807BE30 @ case 2
.4byte _0807BE4C @ case 3
.4byte _0807BE78 @ case 4
.4byte _0807BE94 @ case 5
.4byte _0807BEB4 @ case 6
.4byte _0807BEC4 @ case 7
_0807BDF8:
movs r1, #0x32
ldrsh r0, [r3, r1]
ldr r1, _0807BE0C @ =gRoomControls
ldrh r1, [r1, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BEE2
movs r5, #0
b _0807BEE2
.align 2, 0
_0807BE0C: .4byte gRoomControls
_0807BE10:
movs r2, #0x32
ldrsh r0, [r3, r2]
ldr r2, _0807BE2C @ =gRoomControls
ldrh r1, [r2, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BE20
movs r5, #0
_0807BE20:
ldrh r0, [r2, #0x1e]
subs r0, #0xa
movs r4, #0x2e
ldrsh r1, [r3, r4]
ldrh r2, [r2, #6]
b _0807BE6A
.align 2, 0
_0807BE2C: .4byte gRoomControls
_0807BE30:
ldr r1, _0807BE48 @ =gRoomControls
ldrh r2, [r1, #0x1e]
subs r2, #0xa
movs r4, #0x2e
ldrsh r0, [r3, r4]
ldrh r1, [r1, #6]
subs r0, r0, r1
cmp r2, r0
bhs _0807BEE2
movs r5, #1
b _0807BEE2
.align 2, 0
_0807BE48: .4byte gRoomControls
_0807BE4C:
ldr r4, _0807BE74 @ =gRoomControls
ldrh r0, [r4, #0x20]
subs r0, #0xa
movs r2, #0x32
ldrsh r1, [r3, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
cmp r0, r1
bhs _0807BE60
movs r5, #2
_0807BE60:
ldrh r0, [r4, #0x1e]
subs r0, #0xa
movs r2, #0x2e
ldrsh r1, [r3, r2]
ldrh r2, [r4, #6]
_0807BE6A:
subs r1, r1, r2
cmp r0, r1
bhs _0807BEE2
movs r5, #1
b _0807BEE2
.align 2, 0
_0807BE74: .4byte gRoomControls
_0807BE78:
ldr r1, _0807BE90 @ =gRoomControls
ldrh r2, [r1, #0x20]
subs r2, #0xa
movs r4, #0x32
ldrsh r0, [r3, r4]
ldrh r1, [r1, #8]
subs r0, r0, r1
cmp r2, r0
bhs _0807BEE2
movs r5, #2
b _0807BEE2
.align 2, 0
_0807BE90: .4byte gRoomControls
_0807BE94:
ldr r4, _0807BEB0 @ =gRoomControls
ldrh r0, [r4, #0x20]
subs r0, #0xa
movs r2, #0x32
ldrsh r1, [r3, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
cmp r0, r1
bhs _0807BEA8
movs r5, #2
_0807BEA8:
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldrh r1, [r4, #6]
b _0807BEDA
.align 2, 0
_0807BEB0: .4byte gRoomControls
_0807BEB4:
movs r2, #0x2e
ldrsh r0, [r3, r2]
ldr r1, _0807BEC0 @ =gRoomControls
ldrh r1, [r1, #6]
b _0807BEDA
.align 2, 0
_0807BEC0: .4byte gRoomControls
_0807BEC4:
movs r4, #0x32
ldrsh r0, [r3, r4]
ldr r2, _0807BEE8 @ =gRoomControls
ldrh r1, [r2, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BED4
movs r5, #0
_0807BED4:
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldrh r1, [r2, #6]
_0807BEDA:
subs r0, r0, r1
cmp r0, #9
bhi _0807BEE2
movs r5, #3
_0807BEE2:
adds r0, r5, #0
pop {r4, r5, pc}
.align 2, 0
_0807BEE8: .4byte gRoomControls
.syntax divided
@@ -1,84 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r1, #0
ldr r0, _0807BF04 @ =gArea
ldrb r1, [r0, #0xd]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0807BF0C
ldr r0, _0807BF08 @ =gRoomControls
ldrb r0, [r0, #5]
b _0807BF7C
.align 2, 0
_0807BF04: .4byte gArea
_0807BF08: .4byte gRoomControls
_0807BF0C:
cmp r2, #1
beq _0807BF2C
cmp r2, #1
blo _0807BF1E
cmp r2, #2
beq _0807BF40
cmp r2, #3
beq _0807BF58
b _0807BF7A
_0807BF1E:
ldr r0, _0807BF28 @ =gRoomControls
ldrh r0, [r0, #8]
adds r7, r0, #0
subs r7, #0x10
b _0807BF60
.align 2, 0
_0807BF28: .4byte gRoomControls
_0807BF2C:
ldr r0, _0807BF3C @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r0, [r0, #0x1e]
adds r1, r1, r0
adds r6, r1, #0
adds r6, #0x10
b _0807BF60
.align 2, 0
_0807BF3C: .4byte gRoomControls
_0807BF40:
ldr r0, _0807BF50 @ =gRoomControls
ldrh r1, [r0, #8]
ldrh r0, [r0, #0x20]
adds r1, r1, r0
adds r7, r1, #0
adds r7, #0x10
b _0807BF60
.align 2, 0
_0807BF50: .4byte gRoomControls
_0807BF54:
adds r0, r4, #0
b _0807BF7C
_0807BF58:
ldr r0, _0807BF80 @ =gRoomControls
ldrh r0, [r0, #6]
adds r6, r0, #0
subs r6, #0x10
_0807BF60:
ldr r5, _0807BF84 @ =gUnk_02033ACC
movs r4, #0
_0807BF64:
adds r0, r6, #0
adds r1, r7, #0
adds r2, r5, #0
bl sub_0807BF88
cmp r0, #0
bne _0807BF54
adds r4, #1
adds r5, #0x20
cmp r4, #0x3f
bls _0807BF64
_0807BF7A:
movs r0, #0xff
_0807BF7C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BF80: .4byte gRoomControls
_0807BF84: .4byte gUnk_02033ACC
.syntax divided
@@ -1,19 +0,0 @@
.syntax unified
push {r4, lr}
adds r3, r2, #0
ldrh r2, [r3, #4]
subs r0, r0, r2
ldrh r2, [r3, #6]
subs r1, r1, r2
movs r2, #0
ldrh r4, [r3]
cmp r0, r4
bhs _0807BFA4
ldrh r3, [r3, #2]
cmp r1, r3
bhs _0807BFA4
movs r2, #1
_0807BFA4:
adds r0, r2, #0
pop {r4, pc}
.syntax divided
@@ -1,79 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r7, _0807C4E8 @ =gMapDataBottom
ldr r6, _0807C4EC @ =gMapDataTop
ldr r0, _0807C4F0 @ =gRoomControls
ldrh r1, [r0, #0x1e]
lsrs r3, r1, #4
ldrh r0, [r0, #0x20]
lsrs r0, r0, #4
str r0, [sp]
movs r4, #0
movs r1, #0
cmp r1, r0
bhs _0807C4DC
movs r0, #0x40
subs r0, r0, r3
lsls r0, r0, #1
mov sb, r0
_0807C48C:
movs r5, #0
adds r1, #1
mov sl, r1
cmp r5, r3
bhs _0807C4CA
ldr r0, _0807C4F4 @ =0x00003FFF
mov r8, r0
_0807C49A:
ldrh r0, [r7]
cmp r0, r8
bls _0807C4AC
adds r1, r4, #0
movs r2, #1
str r3, [sp, #4]
bl SetTile
ldr r3, [sp, #4]
_0807C4AC:
ldrh r0, [r6]
cmp r0, r8
bls _0807C4BE
adds r1, r4, #0
movs r2, #2
str r3, [sp, #4]
bl SetTile
ldr r3, [sp, #4]
_0807C4BE:
adds r7, #2
adds r6, #2
adds r4, #1
adds r5, #1
cmp r5, r3
blo _0807C49A
_0807C4CA:
add r7, sb
add r6, sb
adds r0, r4, #0
adds r0, #0x40
subs r4, r0, r3
mov r1, sl
ldr r0, [sp]
cmp r1, r0
blo _0807C48C
_0807C4DC:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807C4E8: .4byte gMapDataBottom
_0807C4EC: .4byte gMapDataTop
_0807C4F0: .4byte gRoomControls
_0807C4F4: .4byte 0x00003FFF
.syntax divided
@@ -4,7 +4,7 @@
ldrb r0, [r0, #4]
cmp r0, #0x71
beq _0807C592
ldr r0, _0807C598 @ =gUnk_02019EE0
ldr r0, _0807C598 @ =gMapDataBottomSpecial
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
@@ -22,7 +22,7 @@
_0807C524:
adds r4, #0xc
ldr r1, [r4, #4]
ldr r0, _0807C598 @ =gUnk_02019EE0
ldr r0, _0807C598 @ =gMapDataBottomSpecial
cmp r1, r0
beq _0807C534
ldr r0, _0807C59C @ =gMapDataTopSpecial
@@ -43,7 +43,7 @@ _0807C54A:
ldr r0, [r4]
cmp r0, #0
blt _0807C524
ldr r4, _0807C598 @ =gUnk_02019EE0
ldr r4, _0807C598 @ =gMapDataBottomSpecial
movs r0, #0x80
lsls r0, r0, #7
adds r5, r4, r0
@@ -74,7 +74,7 @@ _0807C592:
pop {r4, r5, r6, pc}
.align 2, 0
_0807C594: .4byte gRoomControls
_0807C598: .4byte gUnk_02019EE0
_0807C598: .4byte gMapDataBottomSpecial
_0807C59C: .4byte gMapDataTopSpecial
_0807C5A0: .4byte gUnk_02022830
_0807C5A4: .4byte gArea
@@ -1,37 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
bl sub_0807BFD0
ldr r2, _0807C850 @ =gUnk_03004030
ldr r6, _0807C854 @ =gPlayerEntity
ldr r4, _0807C858 @ =gRoomControls
ldr r3, [r2]
ldrh r1, [r3, #6]
movs r0, #0x3f
ands r0, r1
lsls r0, r0, #4
ldrh r1, [r4, #6]
adds r0, r0, r1
ldrh r1, [r2, #4]
adds r1, r1, r0
movs r5, #0
strh r1, [r6, #0x2e]
ldrh r1, [r3, #6]
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r4, [r4, #8]
adds r0, r0, r4
ldrh r1, [r2, #6]
adds r1, r1, r0
strh r1, [r6, #0x32]
bl sub_080809D4
ldr r0, _0807C85C @ =gUpdateVisibleTiles
strb r5, [r0]
pop {r4, r5, r6, pc}
.align 2, 0
_0807C850: .4byte gUnk_03004030
_0807C854: .4byte gPlayerEntity
_0807C858: .4byte gRoomControls
_0807C85C: .4byte gUpdateVisibleTiles
.syntax divided
+2 -2
View File
@@ -37,7 +37,7 @@
bl sub_0807BBE4
bl sub_0807BC84
bl sub_0805E248
ldr r0, _08080190 @ =gUnk_02019EE0
ldr r0, _08080190 @ =gMapDataBottomSpecial
adds r1, r5, #0
bl sub_0801AB08
ldr r0, _08080194 @ =gMapDataTopSpecial
@@ -51,6 +51,6 @@ _08080180: .4byte gUnk_02034480
_08080184: .4byte gUnk_0200B640
_08080188: .4byte gUnk_02022830
_0808018C: .4byte gUnk_020246B0
_08080190: .4byte gUnk_02019EE0
_08080190: .4byte gMapDataBottomSpecial
_08080194: .4byte gMapDataTopSpecial
.syntax divided
@@ -9,7 +9,7 @@ _080A73B4:
bl DeleteAllEntities
bl sub_0805E974
ldr r1, _080A746C @ =gCurrentRoomProperties
ldr r5, _080A7470 @ =gUnk_02032EC0
ldr r5, _080A7470 @ =gUI
ldr r0, [r5, #0x10]
str r0, [r1]
ldr r0, _080A7474 @ =gPlayerState
@@ -84,7 +84,7 @@ _080A73B4:
.align 2, 0
_080A7468: .4byte gFadeControl
_080A746C: .4byte gCurrentRoomProperties
_080A7470: .4byte gUnk_02032EC0
_080A7470: .4byte gUI
_080A7474: .4byte gPlayerState
_080A7478: .4byte gMapBottom
_080A747C: .4byte gMapTop
@@ -102,7 +102,7 @@ _080A74A8:
ldrh r0, [r5, #0xa]
bl SetFadeInverted
_080A74AE:
ldr r1, _080A74C0 @ =gUnk_02032EC0
ldr r1, _080A74C0 @ =gUI
movs r2, #0
movs r0, #4
strb r0, [r1]
@@ -112,6 +112,6 @@ _080A74AE:
_080A74BC:
pop {r4, r5, pc}
.align 2, 0
_080A74C0: .4byte gUnk_02032EC0
_080A74C0: .4byte gUI
_080A74C4: .4byte gRoomTransition
.syntax divided
+4 -4
View File
@@ -175,7 +175,7 @@ _080A5658:
cmp r5, r1
blo _080A5658
_080A5672:
ldr r5, _080A56B0 @ =gUnk_02019EE0
ldr r5, _080A56B0 @ =gMapDataBottomSpecial
ldrb r0, [r5]
cmp r0, #0
beq _080A570E
@@ -199,7 +199,7 @@ _080A56A0: .4byte gMenu
_080A56A4: .4byte gMain
_080A56A8: .4byte gSpriteAnimations_322
_080A56ACEU: .4byte 0x00000143
_080A56B0: .4byte gUnk_02019EE0
_080A56B0: .4byte gMapDataBottomSpecial
_080A56B4: .4byte gScreen
_080A56B8:
cmp r0, #3
@@ -428,7 +428,7 @@ _080A5E64:
cmp r5, r1
blo _080A5E64
_080A5E7C:
ldr r5, _080A5EB8 @ =gUnk_02019EE0
ldr r5, _080A5EB8 @ =gMapDataBottomSpecial
ldrb r0, [r5]
cmp r0, #0
beq _080A5F14
@@ -452,7 +452,7 @@ _080A5EA8: .4byte gMenu
_080A5EAC: .4byte gMain
_080A5EB0: .4byte 0x000001FB
_080A5EB4: .4byte gSpriteAnimations_322
_080A5EB8: .4byte gUnk_02019EE0
_080A5EB8: .4byte gMapDataBottomSpecial
_080A5EBC: .4byte gScreen
_080A5EC0:
cmp r0, #3
+2 -2
View File
@@ -16,7 +16,7 @@
movs r0, #0
bl SetColor
ldr r1, _080A659C @ =gUnk_08128F4C
ldr r0, _080A65A0 @ =gUnk_02032EC0
ldr r0, _080A65A0 @ =gUI
ldrb r0, [r0, #3]
lsls r0, r0, #1
adds r0, r0, r1
@@ -44,7 +44,7 @@ _080A6590: .4byte gScreen
_080A6594: .4byte 0x0000F7FF
_080A6598: .4byte gPaletteBuffer
_080A659C: .4byte gUnk_08128F4C
_080A65A0: .4byte gUnk_02032EC0
_080A65A0: .4byte gUI
_080A65A4: .4byte gSave
_080A65A8: .4byte gMenu
.syntax divided
+4 -4
View File
@@ -74,7 +74,7 @@ _080A5F30:
ands r0, r1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r4, _080A5F80 @ =gUnk_02019EE0
ldr r4, _080A5F80 @ =gMapDataBottomSpecial
ldrh r0, [r4, #2]
cmp r0, #0
beq _080A5FAE
@@ -92,7 +92,7 @@ _080A5F66:
_080A5F74: .4byte gOamCmd
_080A5F78: .4byte gMenu
_080A5F7C: .4byte gUnk_08128E94
_080A5F80: .4byte gUnk_02019EE0
_080A5F80: .4byte gMapDataBottomSpecial
_080A5F84:
cmp r6, #0
bne _080A5F8A
@@ -195,7 +195,7 @@ _080A6738:
ands r0, r1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r4, _080A678C @ =gUnk_02019EE0
ldr r4, _080A678C @ =gMapDataBottomSpecial
ldrh r0, [r4, #2]
cmp r0, #0
beq _080A67BA
@@ -214,7 +214,7 @@ _080A677C: .4byte gOamCmd
_080A6780: .4byte gMenu
_080A6784: .4byte gUnk_08128E94
_080A6788: .4byte 0x000001FB
_080A678C: .4byte gUnk_02019EE0
_080A678C: .4byte gMapDataBottomSpecial
_080A6790:
cmp r6, #0
bne _080A6796
+4 -4
View File
@@ -31,7 +31,7 @@ _080A67F4:
movs r5, #0x71
b _080A6822
_080A6802:
ldr r1, _080A68AC @ =gUnk_02032EC0
ldr r1, _080A68AC @ =gUI
adds r0, r1, #0
adds r0, #0x20
ldrb r0, [r0]
@@ -113,13 +113,13 @@ _080A6886:
ldrb r0, [r4, #2]
lsrs r0, r0, #1
strh r0, [r1, #0xa]
ldr r0, _080A68D0 @ =gUnk_02019EE0
ldr r0, _080A68D0 @ =gMapDataBottomSpecial
movs r1, #0x80
lsls r1, r1, #3
bl MemClear
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A68AC: .4byte gUnk_02032EC0
_080A68AC: .4byte gUI
_080A68B0: .4byte gUnk_08128E94
_080A68B4: .4byte gUnk_03003DE4
_080A68B8: .4byte gUnk_02017AA0
@@ -128,5 +128,5 @@ _080A68C0: .4byte 0x00001E0B
_080A68C4: .4byte 0x0400000E
_080A68C8: .4byte 0xA2600001
_080A68CC: .4byte gMenu
_080A68D0: .4byte gUnk_02019EE0
_080A68D0: .4byte gMapDataBottomSpecial
.syntax divided
+2 -2
View File
@@ -10,7 +10,7 @@
adds r2, #0x2d
ldrb r0, [r2]
lsls r0, r0, #3
ldr r3, _080A69DC @ =gUnk_02019EE0
ldr r3, _080A69DC @ =gMapDataBottomSpecial
adds r0, r0, r3
lsrs r1, r5, #8
strb r1, [r0]
@@ -38,5 +38,5 @@ _080A69D4:
pop {r4, r5, r6, pc}
.align 2, 0
_080A69D8: .4byte gMenu
_080A69DC: .4byte gUnk_02019EE0
_080A69DC: .4byte gMapDataBottomSpecial
.syntax divided
+2 -2
View File
@@ -16,7 +16,7 @@ sub_0808C964: @ 0x0808C964
ldrb r0, [r4, #9]
cmp r0, #0x76
bne _0808C982
ldr r0, _0808CA08 @ =gUnk_02032EC0
ldr r0, _0808CA08 @ =gUI
adds r0, #0x20
ldrb r0, [r0]
cmp r0, #2
@@ -93,7 +93,7 @@ _0808C9FA:
_0808CA04:
pop {r4, pc}
.align 2, 0
_0808CA08: .4byte gUnk_02032EC0
_0808CA08: .4byte gUI
_0808CA0C: .4byte gArea
thumb_func_start sub_0808CA10
+2 -2
View File
@@ -92,7 +92,7 @@ UpdateScrollVram: @ 0x08000108
ldr r0, [r0]
cmp r0, #0
beq _08000126
ldr r0, _080001F0 @ =gUnk_02019EE0
ldr r0, _080001F0 @ =gMapDataBottomSpecial
ldr r1, _080001F4 @ =gUnk_02021F70
bl _call_via_r4
_08000126:
@@ -197,7 +197,7 @@ GetTileIndex: @ 0x080001DA
.align 2, 0
_080001E8: .4byte gUpdateVisibleTiles
_080001EC: .4byte gMapBottom
_080001F0: .4byte gUnk_02019EE0
_080001F0: .4byte gMapDataBottomSpecial
_080001F4: .4byte gUnk_02021F70
_080001F8: .4byte gMapTop
_080001FC: .4byte gMapDataTopSpecial
+60 -60
View File
@@ -544,108 +544,108 @@ gAreaRoomMaps_CrenelMinishPaths:: @ 08103D24
gAreaRoomMap_MinishHouseInteriors_0:: @ 08103D34
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_0_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_0_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_0_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_0_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_1:: @ 08103D58
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_1_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_1_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_1_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_1_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_2:: @ 08103D7C
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_2_1, 0x1D0, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_2_2, 0x1000, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_2_1, 0x1D0, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_2_2, 0x1000, 1, 1
gAreaRoomMap_MinishHouseInteriors_3:: @ 08103DA0
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_3_1, 0xA0, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_3_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_3_1, 0xA0, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_3_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_4:: @ 08103DC4
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_4_1, 0xA0, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_4_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_4_1, 0xA0, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_4_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_5:: @ 08103DE8
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_5_1, 0xA0, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_5_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_5_1, 0xA0, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_5_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_6:: @ 08103E0C
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_6_1, 0xA0, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_6_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_6_1, 0xA0, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_6_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_8:: @ 08103E30
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_8_1, 0xE1, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_8_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_8_1, 0xE1, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_8_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_7:: @ 08103E54
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_7_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_7_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_7_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_7_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_9:: @ 08103E78
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_9_1, 0x159, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_9_2, 0x1000, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_9_1, 0x159, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_9_2, 0x1000, 1, 1
gAreaRoomMap_MinishHouseInteriors_10:: @ 08103E9C
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_10_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_10_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_10_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_10_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_11:: @ 08103EC0
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_11_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_11_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_11_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_11_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_12:: @ 08103EE4
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_12_1, 0xDC, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_12_2, 0x1000, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_12_1, 0xDC, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_12_2, 0x1000, 1, 1
gAreaRoomMap_MinishHouseInteriors_13:: @ 08103F08
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_13_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_13_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_13_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_13_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_14:: @ 08103F2C
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_14_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_14_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_14_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_14_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_15:: @ 08103F50
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_15_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_15_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_15_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_15_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_16:: @ 08103F74
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_16_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_16_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_16_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_16_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_17:: @ 08103F98
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_17_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_17_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_17_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_17_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_18:: @ 08103FBC
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_18_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_18_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_18_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_18_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_19:: @ 08103FE0
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_19_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_19_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_19_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_19_2, 0x800, 1, 1
gAreaRoomMap_MinishHouseInteriors_20:: @ 08104004
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_MinishHouseInteriors_20_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_MinishHouseInteriors_20_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_MinishHouseInteriors_20_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_MinishHouseInteriors_20_2, 0x800, 1, 1
gAreaRoomMaps_MinishHouseInteriors:: @ 08104028
.4byte gAreaRoomMap_MinishHouseInteriors_0
@@ -691,48 +691,48 @@ gAreaRoomMaps_MinishHouseInteriors:: @ 08104028
gAreaRoomMap_TownMinishHoles_0:: @ 081040C8
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_0_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_0_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_0_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_0_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_1:: @ 081040EC
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_1_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_1_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_1_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_1_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_2:: @ 08104110
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_2_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_2_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_2_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_2_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_3:: @ 08104134
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_3_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_3_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_3_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_3_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_4:: @ 08104158
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_4_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_4_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_4_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_4_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_5:: @ 0810417C
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_5_1, 0x96, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_5_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_5_1, 0x96, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_5_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_6:: @ 081041A0
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_6_1, 0x24C, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_6_2, 0x2000, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_6_1, 0x24C, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_6_2, 0x2000, 1, 1
gAreaRoomMap_TownMinishHoles_7:: @ 081041C4
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_7_1, 0xE1, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_7_2, 0x800, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_7_1, 0xE1, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_7_2, 0x800, 1, 1
gAreaRoomMap_TownMinishHoles_8:: @ 081041E8
map_bottom offset_gAreaRoomMap_TownMinishHoles_8_0, 0x2000, 1
map_unknown offset_gAreaRoomMap_TownMinishHoles_8_1, 0x190, 1
map_unknown_2 offset_gAreaRoomMap_TownMinishHoles_8_2, 0x2000, 1, 1
collision_bottom offset_gAreaRoomMap_TownMinishHoles_8_1, 0x190, 1
map_bottom_special offset_gAreaRoomMap_TownMinishHoles_8_2, 0x2000, 1, 1
gAreaRoomMaps_TownMinishHoles:: @ 0810420C
.4byte gAreaRoomMap_TownMinishHoles_0
+1
View File
@@ -506,6 +506,7 @@ extern u8 gManagerCount;
/** @name Tile Macros */ /// @{
#define TILE(x, y) (((((x)-gRoomControls.origin_x) >> 4) & 0x3F) | ((((y)-gRoomControls.origin_y) >> 4) & 0x3F) << 6)
#define TILE_POS(x, y) (x + (y << 6))
#define COORD_TO_TILE(entity) TILE((entity)->x.HALF.HI, (entity)->y.HALF.HI)
#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) TILE((entity)->x.HALF.HI - (xOff), (entity)->y.HALF.HI - (yOff))
/// @}
+1 -1
View File
@@ -53,7 +53,7 @@ typedef struct {
/*0x08*/ s8 saveStatus[3];
/*0x0b*/ SaveFile saves[3];
} struct_02019EE0;
extern struct_02019EE0 gUnk_02019EE0;
extern struct_02019EE0 gMapDataBottomSpecial;
// TODO size: 0x8000 from ClearTilemaps?
extern void sub_08056FEC(u32, struct_020227E8*);
+1 -1
View File
@@ -214,7 +214,7 @@ extern void sub_0807ACCC(Entity*);
extern u32 sub_0807B014();
extern void sub_0807B0C8(void);
extern void sub_0807B7D8(u32, u32, u32);
extern void sub_0807B9B8(s32, s32, s32);
extern void sub_0807B9B8(u32, u32, u32);
extern void sub_0807BA8C(u32, u32);
extern void sub_0807BB68(s16*, u32, u32);
extern bool32 sub_0807BD14(Entity*, u32);
+2 -2
View File
@@ -82,8 +82,8 @@ typedef struct {
} UI;
static_assert(sizeof(UI) == 0x3b4);
extern Main gMain; /**< Main instance. */
extern UI gUnk_02032EC0; /**< UI instance. */
extern Main gMain; /**< Main instance. */
extern UI gUI; /**< UI instance. */
/**
* Program entry point.
+3 -2
View File
@@ -137,7 +137,7 @@ typedef struct {
u16 unk_06;
} DiggingCaveEntrance;
extern struct {
typedef struct {
DiggingCaveEntrance* unk_00;
u16 unk_04;
u16 unk_06;
@@ -145,7 +145,8 @@ extern struct {
u8 unk_09;
u8 unk_0a;
u8 unk_0b;
} gUnk_03004030;
} struct_03004030;
extern struct_03004030 gUnk_03004030;
extern DiggingCaveEntrance* diggingCaveEntrances[];
+8 -8
View File
@@ -4,14 +4,14 @@
#include "global.h"
typedef struct {
u16* bgControlPtr; // Points to the BgSettings.control field for the bg belonging to this layer?
u16 _4[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom
u8 _2004[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
u8 _3004[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
u8 _4004[0x1000]; // gMetatileTypesTop, gMetatileTypesBottom
s16 _5004[0x500]; // gUnk_02011654,gUnk_0202BEB4
// Maybe even include here gMetatilesTop, gUnk_02016654 ?
// gMetatilesBottom, gUnk_02030EB4
/*0x0000*/ u16* bgControlPtr; // Points to the BgSettings.control field for the bg belonging to this layer?
/*0x0004*/ u16 mapData[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom
/*0x2004*/ u8 collisionData[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
/*0x3004*/ u16 mapDataClone[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
/*0x5004*/ u16 metatileTypes[0x800]; // gMetatileTypesTop, gMetatileTypesBottom
/*0x6004*/ u16 unkData2[0x800]; // gUnk_02011654,gUnk_0202BEB4
/*0x7004*/ u16 metatiles[0x2000]; // gMetatilesTop, gMetatilesBottom
/*0xb004*/ u8 unkData3[0x1000]; // gUnk_02016654, gUnk_02030EB4
} LayerStruct;
extern LayerStruct gMapTop;
+2 -2
View File
@@ -68,7 +68,7 @@ SECTIONS {
. = 0x00018EA0; gUnk_02018EA0 = .;
. = 0x00018EB0; gUnk_02018EB0 = .;
. = 0x00018EE0; gUnk_02018EE0 = .;
. = 0x00019EE0; gUnk_02019EE0 = .;
. = 0x00019EE0; gMapDataBottomSpecial = .;
. = 0x0001AEE0; gUnk_0201AEE0 = .;
. = 0x00021EE0; gSoundPlayingInfo = .;
. = 0x00021F00; gUnk_02021F00 = .;
@@ -104,7 +104,7 @@ SECTIONS {
. = 0x0002CEB4; gMetatilesBottom = .;
. = 0x00030EB4; gUnk_02030EB4 = .;
. = 0x00031EC0; gUnk_02031EC0 = .;
. = 0x00032EC0; gUnk_02032EC0 = .;
. = 0x00032EC0; gUI = .;
. = 0x00032EDC; gUnk_02032EDC = .;
. = 0x00032F14; gUnk_02032F14 = .;
. = 0x00033280; gActiveScriptInfo = .;
+4 -3
View File
@@ -174,6 +174,7 @@ void sub_0806F704(Entity* ent, u32 a2) {
ent->y.HALF.HI = (((a2 >> 2) & 0x3F0) | 8) + gRoomControls.origin_y;
}
/** Calculates the tile position of the player but modifies it by the hitbox depending on the animation state. */
u32 sub_0806F730(Entity* ent) {
u32 tmp = 0x3F;
u32 x = ent->x.HALF.HI + ent->hitbox->offset_x - gRoomControls.origin_x;
@@ -203,16 +204,16 @@ u32 sub_0806F798(Entity* ent) {
}
u32 sub_0806F7D0(Entity* ent) {
return gMapBottom._2004[sub_0806F730(ent)];
return gMapBottom.collisionData[sub_0806F730(ent)];
}
u32 sub_0806F7EC(Entity* ent) {
return gMapBottom._4[sub_0806F730(ent)];
return gMapBottom.mapData[sub_0806F730(ent)];
}
u32 sub_0806F804(u32 x, u32 y) {
u32 idx = ((x >> 4) & 0x3F) + 4 * (y & 0x3F0);
return gMapBottom._4[idx];
return gMapBottom.mapData[idx];
}
u32 sub_0806F824(Entity* a, Entity* b, s32 x, s32 y) {
+2 -2
View File
@@ -33,12 +33,12 @@ void sub_0805FA04(void) {
gScreen.bg3.control = BGCNT_SCREENBASE(30) | BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3);
gScreen.bg3.updated = 1;
MessageInitialize();
MemClear((void*)&gUnk_02032EC0, sizeof(UI));
MemClear((void*)&gUI, sizeof(UI));
MemClear((void*)&gGenericMenu, sizeof(GenericMenu));
gGenericMenu.unk16 = gSaveHeader->language;
LoadGfxGroups();
SetColor(0, 0x1144);
gMain.state = 1;
gMain.state = GAMETASK_INIT;
InitSoundPlayingInfo();
ResetFadeMask();
}
+6 -6
View File
@@ -46,7 +46,7 @@ void sub_080A2E40(void) {
EraseAllEntities();
ResetPalettes();
ResetPaletteTable(0);
MemClear(&gUnk_02032EC0, sizeof gUnk_02032EC0);
MemClear(&gUI, sizeof gUI);
MemClear(&gChooseFileState, sizeof gChooseFileState);
MemClear(&gBG0Buffer, sizeof gBG0Buffer);
LoadGfxGroups();
@@ -73,7 +73,7 @@ void sub_080A2E40(void) {
*(u8*)(addr + 4) = 0;
}
sub_080A3198(0, 0);
gMain.state = 1;
gMain.state = GAMETASK_INIT;
SoundReq(BGM_FILE_SELECT);
SetFade(4, 8);
}
@@ -81,18 +81,18 @@ void sub_080A2E40(void) {
void sub_080A2F8C(void) {
if (gFadeControl.active == 0) {
switch (gMain.substate) {
case 0:
gMain.substate = 1;
case GAMEMAIN_INITROOM:
gMain.substate = GAMEMAIN_CHANGEROOM;
{
// TODO write to 0x2000005
u32 addr = (0x80 << 0x12);
*(u8*)(addr + 5) = 1;
*(u8*)(addr + 6) = 1;
}
gMain.state = 2;
gMain.state = GAMETASK_MAIN;
SetFade(5, 8);
break;
case 1:
case GAMEMAIN_CHANGEROOM:
SetTask(TASK_GAME);
break;
}
+6 -6
View File
@@ -10,7 +10,7 @@
extern u8 gEntCount;
extern u8 gMapDataTopSpecial[];
extern u16 gUnk_02019EE0[];
extern u16 gMapDataBottomSpecial[];
extern void sub_080197D4(const void*);
@@ -86,7 +86,7 @@ void GyorgFemale_Setup(GyorgFemaleEntity* this) {
this->eyesVulnerable = 0;
this->unk_79 = 0;
this->childrenSpawnTimer = 0x3C;
MemClear(&gUnk_02019EE0, 0x8000);
MemClear(&gMapDataBottomSpecial, 0x8000);
MemClear(&gMapDataTopSpecial, 0x8000);
sub_0804660C(this, 0);
sub_080464C0(this);
@@ -215,7 +215,7 @@ void GyorgFemale_Action3(GyorgFemaleEntity* this) {
#ifndef EU
void sub_08046498(GyorgFemaleEntity* this) {
MemClear(&gUnk_02019EE0, 0x8000);
MemClear(&gMapDataBottomSpecial, 0x8000);
MemClear(&gMapDataTopSpecial, 0x8000);
sub_080464C0(this);
}
@@ -233,12 +233,12 @@ void sub_080464C0(GyorgFemaleEntity* this) {
u8* dst;
sub_080197D4(gUnk_080D1A74[super->animationState >> 6]);
sub_08046518();
for (i = 0x20, src = ((u8*)&gUnk_02019EE0), dst = ((u8*)&gUnk_02019EE0) + 0x3260; i != 0; i--) {
for (i = 0x20, src = ((u8*)&gMapDataBottomSpecial), dst = ((u8*)&gMapDataBottomSpecial) + 0x3260; i != 0; i--) {
MemCopy(src, dst, 0x40);
dst += 0x100;
src += 0x40;
}
MemClear(&gUnk_02019EE0, 0x800);
MemClear(&gMapDataBottomSpecial, 0x800);
gUpdateVisibleTiles = 1;
}
@@ -271,7 +271,7 @@ void sub_080465C8(void) {
s32 x, y;
x = (gPlayerEntity.x.HALF.HI - gRoomControls.origin_x) >> 3;
y = (gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) >> 3;
if (gUnk_02019EE0[(y << 7) + x]) {
if (gMapDataBottomSpecial[(y << 7) + x]) {
gPlayerState.field_0x14 = 1;
}
}
+1 -1
View File
@@ -1133,7 +1133,7 @@ void sub_08048004(GyorgMaleEntity* this) {
if (b == 3) {
s32 posX = ((gPlayerEntity.x.HALF.HI - gRoomControls.origin_x) >> 3);
s32 posY = ((gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) >> 3);
u16* tmp = (u16*)&gUnk_02019EE0;
u16* tmp = (u16*)&gMapDataBottomSpecial;
if (tmp[(posY << 7) + posX]) {
if (!(this->unk_7c & 2)) {
this->unk_7c |= 0x80;
+1 -1
View File
@@ -112,7 +112,7 @@ void sub_08037E14(Entity* this) {
s32 x, y;
this->actionDelay = 0x8;
dir = (GetFacingDirection(this, &gPlayerEntity) + 4) & 0x18;
layer = (u8*)GetLayerByIndex(this->collisionLayer)->_2004;
layer = (u8*)GetLayerByIndex(this->collisionLayer)->collisionData;
ptr = gUnk_080CF498 + (dir >> 2);
x = this->x.HALF.HI + *ptr;
y = this->y.HALF.HI + *(ptr + 1);
-1
View File
@@ -27,7 +27,6 @@ extern void sub_08033D78(SpinyBeetleEntity*);
extern u32 sub_08033DF0(SpinyBeetleEntity*);
extern void SpinyBeetle_SetHitType(SpinyBeetleEntity*);
extern void EnemyFunctionHandlerAfterCollision(Entity*, EntityActionArray);
extern void sub_0807B9B8(s32, s32, s32);
extern u32 sub_0804A024(Entity*, u32, u32);
void SpinyBeetle(Entity* this) {
+2 -1
View File
@@ -6,6 +6,7 @@
#include "screen.h"
#include "object.h"
#include "functions.h"
#include "game.h"
typedef struct {
u8 filler[18];
@@ -19,7 +20,7 @@ extern struct_02018EB0 gUnk_02018EB0;
u32 IsEnterPortal(void) {
if (gArea.playShrinkSeq) {
gMain.substate = 4;
gMain.substate = GAMEMAIN_MINISHPORTAL;
gArea.filler[8] = 0;
gArea.filler[9] = 0;
*(u16*)&gArea.filler[10] = 0;
+91 -87
View File
@@ -15,6 +15,7 @@
#include "functions.h"
#include "subtask.h"
#include "item.h"
#include "game.h"
// copy, erase, start
#define NUM_FILE_OPERATIONS 3
@@ -30,7 +31,7 @@ typedef enum {
STATE_START,
} FileSelectState;
// todo: does this belong with gUnk_02019EE0?
// todo: does this belong with gMapDataBottomSpecial?
typedef enum {
SAVE_EMPTY = 0,
SAVE_VALID = 1,
@@ -132,7 +133,7 @@ void sub_080503A8(u32 gfxGroup) {
}
void SetFileSelectState(FileSelectState mode) {
gUnk_02032EC0.state = mode;
gUI.state = mode;
MemClear(&gBG0Buffer, sizeof(gBG0Buffer));
MemClear(&gBG1Buffer, sizeof(gBG1Buffer));
}
@@ -146,7 +147,7 @@ void LoadOptionsFromSave(u32 idx) {
msg_speed = 1;
brightness = 1;
} else {
SaveFile* saveFile = &gUnk_02019EE0.saves[idx];
SaveFile* saveFile = &gMapDataBottomSpecial.saves[idx];
msg_speed = saveFile->msg_speed;
brightness = saveFile->brightness;
}
@@ -159,7 +160,7 @@ void LoadOptionsFromSave(u32 idx) {
void SetActiveSave(u32 idx) {
if (idx < NUM_SAVE_SLOTS) {
gSaveHeader->saveFileId = idx;
MemCopy(&gUnk_02019EE0.saves[idx], &gSave, sizeof(gUnk_02019EE0.saves[idx]));
MemCopy(&gMapDataBottomSpecial.saves[idx], &gSave, sizeof(gMapDataBottomSpecial.saves[idx]));
}
LoadOptionsFromSave(idx);
}
@@ -167,8 +168,8 @@ void SetActiveSave(u32 idx) {
void FileSelectTask(void) {
FlushSprites();
sTaskHandlers[gMain.state]();
if (gUnk_02032EC0.lastState != gUnk_02032EC0.state) {
gUnk_02032EC0.lastState = gUnk_02032EC0.state;
if (gUI.lastState != gUI.state) {
gUI.lastState = gUI.state;
gScreen.bg0.xOffset = 0;
gScreen.bg0.yOffset = 0;
gScreen.bg1.xOffset = 0;
@@ -179,17 +180,17 @@ void FileSelectTask(void) {
}
HideButtonR();
sFileScreenSubHandlers[gUnk_02032EC0.lastState]();
sFileScreenSubHandlers[gUI.lastState]();
gUnk_02019EE0.isTransitioning = FALSE;
gMapDataBottomSpecial.isTransitioning = FALSE;
UpdateEntities();
sub_0805066C();
sub_0801C1D4();
DrawOAMCmd();
DrawEntities();
CopyOAM();
if (gUnk_02019EE0.unk3 != gSaveHeader->language) {
gUnk_02019EE0.unk3 = gSaveHeader->language;
if (gMapDataBottomSpecial.unk3 != gSaveHeader->language) {
gMapDataBottomSpecial.unk3 = gSaveHeader->language;
sub_080503A8(0x6);
sub_080503A8(0xF);
}
@@ -207,11 +208,11 @@ static void HandleFileScreenEnter(void) {
ResetPalettes();
ResetPaletteTable(0);
MemClear(&gUnk_0200AF00, sizeof(gUnk_0200AF00));
MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0));
gUnk_02019EE0.unk3 = 7;
gUnk_02019EE0.unk6 = gSaveHeader->language > LANGUAGE_EN ? 3 : 0;
MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0));
gUnk_02032EC0.lastState = 8;
MemClear(&gMapDataBottomSpecial, sizeof(gMapDataBottomSpecial));
gMapDataBottomSpecial.unk3 = 7;
gMapDataBottomSpecial.unk6 = gSaveHeader->language > LANGUAGE_EN ? 3 : 0;
MemClear(&gUI, sizeof(gUI));
gUI.lastState = 8;
SetFileSelectState(STATE_NONE);
InitDMA();
sub_08050624(0);
@@ -231,7 +232,7 @@ static void HandleFileScreenEnter(void) {
gScreen.controls.layerFXControl = BLDCNT_TGT1_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND;
gScreen.controls.alphaBlend = BLDALPHA_BLEND(15, 10);
gGFXSlots.unk0 = 1;
gMain.state = 1;
gMain.state = GAMETASK_INIT;
SoundReq(BGM_FILE_SELECT);
SetFade(4, 8);
}
@@ -246,7 +247,7 @@ static void HandleFileScreenExit(void) {
}
static void sub_08050624(u32 idx) {
SaveFile* saveFile = &gUnk_02019EE0.saves[idx];
SaveFile* saveFile = &gMapDataBottomSpecial.saves[idx];
int status = ReadSaveFile(idx, saveFile);
switch (status) {
case SAVE_DELETED:
@@ -256,7 +257,7 @@ static void sub_08050624(u32 idx) {
sub_0805194C(idx);
break;
}
gUnk_02019EE0.saveStatus[idx] = status;
gMapDataBottomSpecial.saveStatus[idx] = status;
}
static void sub_0805066C(void) {
@@ -264,20 +265,20 @@ static void sub_0805066C(void) {
const u8* paletteOffset;
loadNewPalette = FALSE;
if (--gUnk_02019EE0.unk1 == 0) {
gUnk_02019EE0.unk1 = 16;
gUnk_02019EE0.unk2 = (gUnk_02019EE0.unk2 + 1) % 15;
if (--gMapDataBottomSpecial.unk1 == 0) {
gMapDataBottomSpecial.unk1 = 16;
gMapDataBottomSpecial.unk2 = (gMapDataBottomSpecial.unk2 + 1) % 15;
loadNewPalette = TRUE;
}
if (gUnk_02019EE0.unk2 == 0) {
gUnk_02019EE0.unk2 = 1;
gUnk_02019EE0.unk1 = (Random() & 0x7) * 16 + 8;
if (gMapDataBottomSpecial.unk2 == 0) {
gMapDataBottomSpecial.unk2 = 1;
gMapDataBottomSpecial.unk1 = (Random() & 0x7) * 16 + 8;
loadNewPalette = TRUE;
}
if (loadNewPalette) {
paletteOffset = &gGlobalGfxAndPalettes[gUnk_080FC8DE[gUnk_02019EE0.unk2]];
paletteOffset = &gGlobalGfxAndPalettes[gUnk_080FC8DE[gMapDataBottomSpecial.unk2]];
#ifdef EU
LoadPalettes(&paletteOffset[0x11A60], 11, 1);
LoadPalettes(&paletteOffset[0x11B60], 12, 1);
@@ -308,7 +309,7 @@ void sub_0805070C(void) {
for (i = 0; i < NUM_SAVE_SLOTS; i++) {
var0->unk6 = 0;
MemClear(var0->unk8, 0x200);
name = &gUnk_02019EE0.saves[i].name[0];
name = &gMapDataBottomSpecial.saves[i].name[0];
for (j = 0; j < FILENAME_LENGTH; j++) {
sub_0805F7DC(name[j], var0);
}
@@ -356,14 +357,14 @@ static void ShowButtonR(void) {
static void HandleFileSelect(void) {
sFileSelectDefaultHandlers[gChooseFileState.state]();
sub_08050A64(gUnk_02019EE0.unk6);
sub_08050A64(gMapDataBottomSpecial.unk6);
}
void sub_08050848(void) {
sub_080503A8(0x7);
sub_0805070C();
gUnk_02019EE0.unk7 = 0;
sub_08050AFC(gUnk_02019EE0.unk6);
gMapDataBottomSpecial.unk7 = 0;
sub_08050AFC(gMapDataBottomSpecial.unk6);
SetMenuType(1);
}
@@ -374,17 +375,17 @@ void sub_0805086C(void) {
// transitioning away from submenu
void sub_08050888(void) {
if (!gFadeControl.active) {
switch (gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk7]) {
switch (gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk7]) {
case SAVE_EMPTY:
sub_0805194C(gUnk_02019EE0.unk7);
sub_0805194C(gMapDataBottomSpecial.unk7);
gChooseFileState.subState = 2;
break;
case SAVE_VALID:
gChooseFileState.subState = 2;
break;
default:
sub_0805194C(gUnk_02019EE0.unk7);
CreateDialogBox(0, gUnk_02019EE0.unk7 + 1);
sub_0805194C(gMapDataBottomSpecial.unk7);
CreateDialogBox(0, gMapDataBottomSpecial.unk7 + 1);
gChooseFileState.timer = 30;
gChooseFileState.subState = 1;
break;
@@ -404,7 +405,7 @@ void sub_080508E4(void) {
void sub_08050910(void) {
sub_08050384();
if (++gUnk_02019EE0.unk7 > 2) {
if (++gMapDataBottomSpecial.unk7 > 2) {
SetMenuType(2);
} else {
gChooseFileState.subState = 0;
@@ -417,18 +418,18 @@ void sub_08050940(void) {
int num_rows;
FileSelectState mode;
if (gUnk_02019EE0.isTransitioning) {
if (gMapDataBottomSpecial.isTransitioning) {
return;
}
row_idx = gUnk_02019EE0.unk6;
row_idx = gMapDataBottomSpecial.unk6;
keys = gInput.newKeys;
if ((gInput.heldKeys & L_BUTTON) && gUnk_02019EE0.saveStatus[row_idx] == SAVE_VALID) {
if ((gInput.heldKeys & L_BUTTON) && gMapDataBottomSpecial.saveStatus[row_idx] == SAVE_VALID) {
keys &= ~(DPAD_UP | DPAD_DOWN);
}
num_rows = gSaveHeader->language > 1 ? NUM_SAVE_SLOTS + 1 : NUM_SAVE_SLOTS;
mode = gUnk_02032EC0.lastState;
mode = gUI.lastState;
switch (keys) {
case DPAD_UP:
if (row_idx > 0)
@@ -439,7 +440,7 @@ void sub_08050940(void) {
row_idx++;
break;
case R_BUTTON:
if (gUnk_02019EE0.saveStatus[row_idx] == SAVE_VALID)
if (gMapDataBottomSpecial.saveStatus[row_idx] == SAVE_VALID)
mode = STATE_OPTIONS;
break;
case A_BUTTON:
@@ -448,7 +449,7 @@ void sub_08050940(void) {
if (row_idx == 3)
mode = STATE_CHOOSE_LANG;
else
switch (gUnk_02019EE0.saveStatus[row_idx]) {
switch (gMapDataBottomSpecial.saveStatus[row_idx]) {
case SAVE_EMPTY:
mode = STATE_NEW;
break;
@@ -459,25 +460,25 @@ void sub_08050940(void) {
break;
}
if (gUnk_02032EC0.lastState != mode) {
if (gUI.lastState != mode) {
SetFileSelectState(mode);
SoundReq(SFX_TEXTBOX_SELECT);
}
row_idx = (row_idx + num_rows) % num_rows;
if (gUnk_02019EE0.unk6 != row_idx) {
gUnk_02019EE0.unk6 = row_idx;
if (gMapDataBottomSpecial.unk6 != row_idx) {
gMapDataBottomSpecial.unk6 = row_idx;
sub_08050AFC(row_idx);
SoundReq(SFX_TEXTBOX_CHOICE);
}
if (gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] == SAVE_VALID) {
if (gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] == SAVE_VALID) {
ShowButtonR();
}
}
void sub_08050A64(u32 idx) {
if (gUnk_02019EE0.saveStatus[idx] != SAVE_VALID) {
if (gMapDataBottomSpecial.saveStatus[idx] != SAVE_VALID) {
return;
}
@@ -529,7 +530,7 @@ void sub_08050B3C(u16*);
void sub_08050AFC(u32 idx) {
SetActiveSave(idx);
MemClear(&gBG1Buffer, sizeof(gBG1Buffer));
if (gUnk_02019EE0.saveStatus[idx] == SAVE_VALID) {
if (gMapDataBottomSpecial.saveStatus[idx] == SAVE_VALID) {
sub_08050B3C(&gBG1Buffer[0x14E]);
}
gScreen.bg1.updated = 1;
@@ -614,13 +615,13 @@ END_NONMATCH
void HandleFileView(void) {
gUnk_080FC93C[gMenu.menuType]();
sub_08050A64(gUnk_02019EE0.unk6);
sub_08050A64(gMapDataBottomSpecial.unk6);
}
void sub_08050C54(void) {
s32 column_idx;
if (gUnk_02019EE0.isTransitioning)
if (gMapDataBottomSpecial.isTransitioning)
return;
column_idx = gMenu.column_idx;
@@ -693,7 +694,7 @@ void sub_08050DB8(void) {
void sub_08050DE4(void) {
s32 row_idx;
if (gUnk_02019EE0.isTransitioning)
if (gMapDataBottomSpecial.isTransitioning)
return;
row_idx = gSaveHeader->language;
@@ -747,9 +748,9 @@ void HandleFileOptions(void) {
void sub_08050EB8(void) {
SaveFile* save;
sub_080503A8(0xe);
save = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6];
gUnk_02019EE0.unk4 = save->msg_speed;
gUnk_02019EE0.unk5 = save->brightness;
save = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6];
gMapDataBottomSpecial.unk4 = save->msg_speed;
gMapDataBottomSpecial.unk5 = save->brightness;
gMenu.column_idx = 0;
gMenu.transitionTimer = 0xff;
SetMenuType(1);
@@ -761,12 +762,12 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void)
char column_idx;
int mode;
if (gUnk_02019EE0.isTransitioning)
if (gMapDataBottomSpecial.isTransitioning)
return;
p_option = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6].brightness;
p_option = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].brightness;
if (gMenu.column_idx == 0) {
p_option = &gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed;
p_option = &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed;
}
mode = 0;
@@ -792,7 +793,8 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void)
case A_BUTTON:
case START_BUTTON:
mode = 2;
if (*(u16*)&gUnk_02019EE0.unk4 != *(u16*)&gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed)
if (*(u16*)&gMapDataBottomSpecial.unk4 !=
*(u16*)&gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed)
mode = 3;
break;
case B_BUTTON:
@@ -802,11 +804,11 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void)
switch (mode) {
case 3:
gUnk_02019EE0.saves[gUnk_02019EE0.unk6].msg_speed = gUnk_02019EE0.unk4;
gUnk_02019EE0.saves[gUnk_02019EE0.unk6].brightness = gUnk_02019EE0.unk5;
gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].msg_speed = gMapDataBottomSpecial.unk4;
gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6].brightness = gMapDataBottomSpecial.unk5;
SoundReq(SFX_MENU_CANCEL);
SetMenuType(mode);
SetActiveSave(gUnk_02019EE0.unk6);
SetActiveSave(gMapDataBottomSpecial.unk6);
break;
case 2:
CreateDialogBox(8, 0);
@@ -814,7 +816,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void)
default:
case 1:
SetMenuType(mode);
SetActiveSave(gUnk_02019EE0.unk6);
SetActiveSave(gMapDataBottomSpecial.unk6);
break;
case 0:
if (gMenu.column_idx != column_idx) {
@@ -822,7 +824,7 @@ NONMATCH("asm/non_matching/fileScreen/sub_08050EF4.inc", void sub_08050EF4(void)
SoundReq(SFX_TEXTBOX_CHOICE);
} else if (option != *p_option) {
*p_option = option;
LoadOptionsFromSave(gUnk_02019EE0.unk6);
LoadOptionsFromSave(gMapDataBottomSpecial.unk6);
SoundReq(SFX_TEXTBOX_CHOICE);
}
break;
@@ -834,7 +836,7 @@ void sub_08050FFC(void) {
switch (HandleSave(0)) {
case SAVE_ERROR:
gMenu.transitionTimer = 0x1e;
sub_0805194C(gUnk_02019EE0.unk6);
sub_0805194C(gMapDataBottomSpecial.unk6);
CreateDialogBox(9, 0);
case SAVE_OK:
SetMenuType(3);
@@ -897,13 +899,13 @@ void sub_080513A8(void) {
void sub_080513C0(void) {
switch (HandleSave(0)) {
case 1:
gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] = 1;
gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] = 1;
SetMenuType(3);
break;
case 0:
break;
case -1:
sub_0805194C(gUnk_02019EE0.unk6);
sub_0805194C(gMapDataBottomSpecial.unk6);
CreateDialogBox(6, 0);
gMenu.transitionTimer = 0x1e;
gMenu.overlayType = 2;
@@ -1030,13 +1032,14 @@ u32 sub_080514BC(u32 a1) {
void sub_08051574(u32 sfx) {
SoundReq(sfx);
MemCopy(&gSave, &gUnk_02019EE0.saves[gUnk_02019EE0.unk6], sizeof(gUnk_02019EE0.saves[gUnk_02019EE0.unk6]));
MemCopy(&gSave, &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6],
sizeof(gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk6]));
sub_0805070C();
}
void HandleFileDelete(void) {
gUnk_080FC9BC[gMenu.menuType]();
sub_08050A64(gUnk_02019EE0.unk6);
sub_08050A64(gMapDataBottomSpecial.unk6);
}
void sub_080515c8(void) {
@@ -1046,7 +1049,7 @@ void sub_080515c8(void) {
void sub_080515D4(void) {
u32 column_idx;
if (gUnk_02019EE0.isTransitioning)
if (gMapDataBottomSpecial.isTransitioning)
return;
gMenu.transitionTimer = 4;
@@ -1082,8 +1085,8 @@ void sub_080515D4(void) {
void sub_080516E0(void) {
if (HandleSave(1)) {
sub_0805194C(gUnk_02019EE0.unk6);
sub_08050AFC(gUnk_02019EE0.unk6);
sub_0805194C(gMapDataBottomSpecial.unk6);
sub_08050AFC(gMapDataBottomSpecial.unk6);
gMenu.transitionTimer = 2;
SetFileSelectState(0);
}
@@ -1091,7 +1094,7 @@ void sub_080516E0(void) {
void HandleFileCopy(void) {
gUnk_080FC9C8[gMenu.menuType]();
sub_08050A64(gUnk_02019EE0.unk6);
sub_08050A64(gMapDataBottomSpecial.unk6);
}
// regalloc
@@ -1100,11 +1103,11 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void)
u32 i;
s32 uVar3;
gUnk_02019EE0.unk7 = 4;
gMapDataBottomSpecial.unk7 = 4;
uVar3 = 0;
for (i = 0; i < 3; i++) {
if (gUnk_02019EE0.saveStatus[i] == 1) {
temp = gUnk_02019EE0.unk6 ^ i;
if (gMapDataBottomSpecial.saveStatus[i] == 1) {
temp = gMapDataBottomSpecial.unk6 ^ i;
uVar3 = !!temp & 4;
} else {
uVar3++;
@@ -1126,14 +1129,14 @@ NONMATCH("asm/non_matching/fileScreen/sub_08051738.inc", void sub_08051738(void)
END_NONMATCH
s32 sub_080517B4(s32 a1) {
u32 i = gUnk_02019EE0.unk7;
u32 i = gMapDataBottomSpecial.unk7;
if (a1 != 0) {
for (i = i + a1; i < 5; i += a1) {
if (gGenericMenu.unk10.a[i] != 0 && gGenericMenu.unk10.a[i] != 4)
return i;
}
i = gUnk_02019EE0.unk7;
i = gMapDataBottomSpecial.unk7;
}
return i;
}
@@ -1142,7 +1145,7 @@ void sub_080517EC(void) {
u32 temp;
s32 delta;
if (gUnk_02019EE0.isTransitioning)
if (gMapDataBottomSpecial.isTransitioning)
return;
delta = 0;
@@ -1155,7 +1158,7 @@ void sub_080517EC(void) {
break;
case A_BUTTON:
case START_BUTTON:
if (gUnk_02019EE0.unk7 < 3) {
if (gMapDataBottomSpecial.unk7 < 3) {
CreateDialogBox(2, 0);
SetMenuType(2);
SoundReq(SFX_TEXTBOX_SELECT);
@@ -1163,30 +1166,31 @@ void sub_080517EC(void) {
}
// fallthrough
case B_BUTTON:
gUnk_02019EE0.unk7 = 4;
gMapDataBottomSpecial.unk7 = 4;
SoundReq(SFX_MENU_CANCEL);
SetFileSelectState(0);
break;
}
temp = sub_080517B4(delta);
if (temp != gUnk_02019EE0.unk7) {
gUnk_02019EE0.unk7 = temp;
if (temp != gMapDataBottomSpecial.unk7) {
gMapDataBottomSpecial.unk7 = temp;
SoundReq(SFX_TEXTBOX_CHOICE);
}
}
void sub_08051874(void) {
s32 temp;
gSaveHeader->saveFileId = gUnk_02019EE0.unk7;
gSaveHeader->saveFileId = gMapDataBottomSpecial.unk7;
temp = HandleSave(0);
gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk7] = temp;
gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk7] = temp;
switch (temp) {
case 1:
MemCopy(&gSave, &gUnk_02019EE0.saves[gUnk_02019EE0.unk7], sizeof(gUnk_02019EE0.saves[gUnk_02019EE0.unk7]));
MemCopy(&gSave, &gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk7],
sizeof(gMapDataBottomSpecial.saves[gMapDataBottomSpecial.unk7]));
SetFileSelectState(0);
break;
case -1:
sub_0805194C(gUnk_02019EE0.unk7);
sub_0805194C(gMapDataBottomSpecial.unk7);
CreateDialogBox(3, 0);
gMenu.transitionTimer = 0x1e;
SetMenuType(3);
@@ -1212,7 +1216,7 @@ void HandleFileStart(void) {
gMenu.menuType = 1;
gSaveHeader->msg_speed = gSave.msg_speed;
gSaveHeader->brightness = gSave.brightness;
gMain.state = 2;
gMain.state = GAMETASK_MAIN;
SetFade(5, 8);
}
}
@@ -1220,8 +1224,8 @@ void HandleFileStart(void) {
void sub_0805194C(u32 save_idx) {
SaveFile* save;
gUnk_02019EE0.saveStatus[save_idx] = 0;
save = &gUnk_02019EE0.saves[save_idx];
gMapDataBottomSpecial.saveStatus[save_idx] = 0;
save = &gMapDataBottomSpecial.saves[save_idx];
MemClear(save, sizeof(*save));
save->msg_speed = 1;
save->brightness = 1;
+29 -29
View File
@@ -123,7 +123,7 @@ extern void sub_08054524(void);
extern void sub_080186D4(void);
extern void sub_0806F364(void);
extern void sub_08052FF4(u32 area, u32 room);
extern void sub_0807C860(void);
extern void CloneMapData(void);
extern void sub_0807C740(void);
extern void SetBGDefaults(void);
extern void LoadItemGfx(void);
@@ -141,8 +141,8 @@ static void sub_08052C3C(void);
static void sub_0805340C(void);
static void sub_08051D98(void);
static void sub_08051DCC(void);
static u32 CheckGameOver(void);
static u32 CheckRoomExit(void);
static bool32 CheckGameOver(void);
static bool32 CheckRoomExit(void);
static void UpdatePlayerRoomStatus(void);
static void sub_0805329C(void);
static void InitializePlayer(void);
@@ -306,14 +306,14 @@ static void GameTask_Transition(void) {
ResetTmpFlags();
gMain.state = GAMETASK_INIT;
gMain.substate = 0;
gMain.substate = GAMEMAIN_INITROOM;
}
static void GameTask_Init(void) {
DispReset(1);
gFadeControl.mask = 0xffffffff;
MemClear(&gOAMControls, 0xB74);
MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0));
MemClear(&gUI, sizeof(gUI));
EraseAllEntities();
SetBGDefaults();
ClearTilemaps();
@@ -495,7 +495,7 @@ static void GameMain_ChangeArea(void) {
if (!gFadeControl.active) {
DispReset(1);
gMain.state = GAMETASK_INIT;
gMain.substate = 0;
gMain.substate = GAMEMAIN_INITROOM;
gRoomTransition.transitioningOut = 1;
}
}
@@ -594,7 +594,7 @@ void Subtask_AuxCutscene(void) {
}
static void AuxCutscene_Init(void) {
const CutsceneData* p = &sCutsceneData[gUnk_02032EC0.field_0x3];
const CutsceneData* p = &sCutsceneData[gUI.field_0x3];
gRoomControls.area = p->area;
gRoomControls.room = p->room;
LoadGfxGroups();
@@ -644,18 +644,18 @@ static const CutsceneData sCutsceneData[] = {
};
static void AuxCutscene_Exit(void) {
u32 flag = sCutsceneData[gUnk_02032EC0.field_0x3]._3;
u32 flag = sCutsceneData[gUI.field_0x3]._3;
if (flag & 0xF0) {
MenuFadeIn(2, flag >> 4);
} else {
gUnk_02032EC0.nextToLoad = 3;
gUI.nextToLoad = 3;
SetFadeInverted(0x10);
MessageInitialize();
}
}
void sub_08051F78(void) {
u32 idx = gUnk_02032EC0.field_0x3;
u32 idx = gUI.field_0x3;
const CutsceneData* p = &sCutsceneData[idx];
sub_08051F9C(p->area, p->room, p->x, p->y);
}
@@ -704,7 +704,7 @@ void GameOverTask(void) {
};
sStates[gMain.state]();
if (gMain.state != 0) {
if (gMain.state != GAMETASK_TRANSITION) {
FlushSprites();
DrawGameOverText();
CopyOAM();
@@ -727,7 +727,7 @@ static void GameOver_Init(void) {
SoundReq(BGM_GAMEOVER);
SetFadeInverted(4);
gFadeControl.mask = 0xFFFF0001;
switch_state(1);
switch_state(GAMETASK_INIT);
}
static void GameOver_FadeIn(void) {
@@ -740,7 +740,7 @@ static void GameOver_FadeIn(void) {
} else {
gMenu.transitionTimer--;
if (gMenu.transitionTimer == 0) {
switch_state(2);
switch_state(GAMETASK_MAIN);
#if defined(DEMO_USA) || defined(DEMO_JP)
SoundReq(SONG_VOL_FADE_OUT);
SetFade(7, 4);
@@ -834,7 +834,7 @@ static void GameOver_TextMove(void) {
default:
gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON;
sub_08050384();
switch_state(3);
switch_state(GAMETASK_EXIT);
return;
}
}
@@ -1175,16 +1175,16 @@ static void sub_0805289C(void) {
}
#endif
static u32 CheckGameOver(void) {
static bool32 CheckGameOver(void) {
if (gRoomTransition.field_0x4[1]) {
InitFade();
gMain.state = 3;
gMain.substate = 0;
gMain.state = GAMETASK_EXIT;
gMain.substate = GAMEMAIN_INITROOM;
SetFade(5, 8);
SoundReq(SONG_STOP_BGM);
return 1;
return TRUE;
}
return 0;
return FALSE;
}
void RoomExitCallback(void) {
@@ -1192,11 +1192,11 @@ void RoomExitCallback(void) {
gArea.onExit(gArea.transitionManager);
}
static u32 CheckRoomExit(void) {
static bool32 CheckRoomExit(void) {
if (gRoomTransition.transitioningOut && gSave.stats.health != 0 && gPlayerState.framestate != PL_STATE_DIE) {
if (StairsAreValid()) {
gRoomTransition.transitioningOut = 0;
return 0;
return FALSE;
}
switch (gRoomTransition.type) {
@@ -1227,11 +1227,11 @@ static u32 CheckRoomExit(void) {
break;
}
RoomExitCallback();
gMain.substate = 3;
gMain.substate = GAMEMAIN_CHANGEAREA;
*(&gMain.pauseInterval + 1) = 1;
return 1;
return TRUE;
}
return 0;
return FALSE;
}
static u32 StairsAreValid(void) {
@@ -1410,7 +1410,7 @@ u32 GetFlagBankOffset(u32 idx) {
}
void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)()) {
if (gMain.substate != 7) {
if (gMain.substate != GAMEMAIN_SUBTASK) {
gArea.transitionManager = mgr;
gArea.onEnter = onEnter;
gArea.onExit = onExit;
@@ -1519,7 +1519,7 @@ static void UpdateFakeScroll(void) {
void LoadAuxiliaryRoom(u32 area, u32 room) {
sub_08052FF4(area, room);
gRoomControls.camera_target = NULL;
sub_0807C860();
CloneMapData();
sub_0807C740();
}
@@ -1806,7 +1806,7 @@ void CutsceneMain_Init(void) {
void sub_080535AC(void) {
gMenu.overlayType = 1;
gMenu.transitionTimer = 0x78;
gUnk_02032EC0.field_0x6 = 1;
gUI.field_0x6 = 1;
gUpdateVisibleTiles = 1;
gScreen.lcd.displayControl &= 0xfeff;
LoadRoomEntityList((EntityData*)gUnk_080FCB94);
@@ -1831,7 +1831,7 @@ void sub_08053618(void) {
}
void sub_08053634(void) {
gUnk_02032EC0.nextToLoad = 3;
gUI.nextToLoad = 3;
MessageInitialize();
}
@@ -1945,7 +1945,7 @@ void sub_08053A5C(void) {
void sub_08053A90(void) {
if (gFadeControl.active == 0) {
gUnk_02032EC0.nextToLoad = 3;
gUI.nextToLoad = 3;
SetBGDefaults();
}
}
+1 -2
View File
@@ -1,6 +1,5 @@
#include "global.h"
extern u32 SetTileType(u32 tileID, u32 tilePos, u32 layerID);
#include "room.h"
void CreateMinishEntrance(u32 tilePos) {
u32 x, y;
+3 -2
View File
@@ -6,6 +6,7 @@
#include "save.h"
#include "message.h"
#include "interrupts.h"
#include "game.h"
extern u32 gRand;
@@ -121,8 +122,8 @@ static bool32 SoftResetKeysPressed(void) {
void SetTask(u32 task) {
gMain.task = task;
gMain.state = 0;
gMain.substate = 0;
gMain.state = GAMETASK_TRANSITION;
gMain.substate = GAMEMAIN_INITROOM;
}
void DisableInterruptsAndDMA(void) {
+2 -1
View File
@@ -8,6 +8,7 @@
#include "coord.h"
#include "functions.h"
#include "common.h"
#include "game.h"
typedef struct {
Manager manager;
@@ -40,7 +41,7 @@ void Manager22_Main(Manager22* this) {
sub_0801E120();
sub_0801E154(this->manager.unk_0e);
}
if (gMain.substate == 2) {
if (gMain.substate == GAMEMAIN_UPDATE) {
gScreen.lcd.displayControl |= DISPCNT_BG3_ON;
sub_0805BA78();
sub_0805BAD4();
+4 -4
View File
@@ -38,15 +38,15 @@ void Manager29_Main(Manager29* this) {
}
void sub_0805CBD0(Manager29* this) {
LayerStruct* puVar2;
LayerStruct* layer;
this->manager.action = 1;
this->unk_38 = (this->unk_38 >> 4 & 0x3fU) | (((this->unk_3a << 0x10) >> 0x14 & 0x3fU) << 6);
this->unk_3a = (this->unk_3c >> 4 & 0x3f) | (((this->unk_36 + this->unk_37 * 0x100) >> 4 & 0x3fU) << 6);
this->unk_3c = GetTileType(this->unk_38, this->unk_34);
puVar2 = GetLayerByIndex(this->unk_34);
this->unk_28 = puVar2->_5004;
this->unk_2c = &puVar2->_4[(s16)this->unk_3a];
layer = GetLayerByIndex(this->unk_34);
this->unk_28 = (u16*)layer->metatileTypes;
this->unk_2c = &layer->mapData[(s16)this->unk_3a];
}
void sub_0805CC3C(Manager29* this) {
+2 -2
View File
@@ -78,7 +78,7 @@ void Subtask_FigurineMenu(void) {
};
#if !(defined(DEMO_USA) || defined(DEMO_JP))
FlushSprites();
if (gUnk_02032EC0.field_0x3 == 0xff) {
if (gUI.field_0x3 == 0xff) {
figurineMenu0_Types[gMenu.menuType]();
} else {
figurineMenu1_Types[gMenu.menuType]();
@@ -113,7 +113,7 @@ void FigurineMenu_080A4608(void) {
{
int r0, r1, r2;
r1 = gUnk_02032EC0.field_0x3;
r1 = gUI.field_0x3;
r0 = gSave.unk6;
r2 = 0x88;
if (r0 == 0) {
+10 -10
View File
@@ -345,7 +345,7 @@ typedef struct {
u8 unk_01;
u8 unk_02[2];
} struct_02019EE0;
extern struct_02019EE0 gUnk_02019EE0[16];
extern struct_02019EE0 gMapDataBottomSpecial[16];
void KinstoneMenu_080A4054(void) {
u32 uVar2;
@@ -353,8 +353,8 @@ void KinstoneMenu_080A4054(void) {
KinstoneMenu_080A414C();
KinstoneMenu_080A4080();
for (uVar2 = 0; uVar2 < 0x10; uVar2++) {
if (gUnk_02019EE0[uVar2].unk_01 != 0) {
gUnk_02019EE0[uVar2].unk_01 -= 1;
if (gMapDataBottomSpecial[uVar2].unk_01 != 0) {
gMapDataBottomSpecial[uVar2].unk_01 -= 1;
}
}
}
@@ -505,8 +505,8 @@ void sub_080A42E0(u32 param_1, u32 param_2) {
iVar4 = sub_080A43A8(uVar1);
if ((param_2 != 0) && (param_2 != 0xff)) {
int index = iVar4 * 4;
if (param_2 != gUnk_02019EE0[iVar4].unk_02[0]) {
gUnk_02019EE0[iVar4].unk_02[0] = param_2;
if (param_2 != gMapDataBottomSpecial[iVar4].unk_02[0]) {
gMapDataBottomSpecial[iVar4].unk_02[0] = param_2;
sub_0801C2F0(iVar4 * 2 + 0x2e0, param_2);
}
gOamCmd._8 = (s16)(iVar4 * 2) + 0x3ae0;
@@ -535,7 +535,7 @@ void sub_080A42E0(u32 param_1, u32 param_2) {
}
void sub_080A4398(void) {
MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0));
MemClear(&gMapDataBottomSpecial, sizeof(gMapDataBottomSpecial));
}
u32 sub_080A43A8(u32 param_1) {
@@ -547,20 +547,20 @@ u32 sub_080A43A8(u32 param_1) {
sub_080A4418(param_1, uVar1 * 0x10 + 0x300);
}
{ int index = uVar1 * 4; }
gUnk_02019EE0[uVar1].unk_00[0] = param_1;
gUnk_02019EE0[uVar1].unk_01 = 2;
gMapDataBottomSpecial[uVar1].unk_00[0] = param_1;
gMapDataBottomSpecial[uVar1].unk_01 = 2;
return uVar1;
}
u32 sub_080A43DC(u32 unk1) {
u32 i;
for (i = 0; i < 16; i++) {
if (unk1 == gUnk_02019EE0[i].unk_00[0]) {
if (unk1 == gMapDataBottomSpecial[i].unk_00[0]) {
return i;
}
}
for (i = 0; i < 16; i++) {
if (gUnk_02019EE0[i].unk_01 == 0) {
if (gMapDataBottomSpecial[i].unk_01 == 0) {
return i + 0x10;
}
}
+1 -1
View File
@@ -1654,7 +1654,7 @@ ASM_FUNC("asm/non_matching/movement/CalculateEntityTileCollisions.inc",
u32 hitboxUnkX;
u32 hitboxUnkY;
layer = GetLayerByIndex(this->collisionLayer)->_2004;
layer = GetLayerByIndex(this->collisionLayer)->collisionData;
xMin = this->x.HALF.HI + this->hitbox->offset_x;
yMin = this->y.HALF.HI + this->hitbox->offset_y;
hitboxUnkX = this->hitbox->unk2[0];
+2 -2
View File
@@ -190,7 +190,7 @@ u32 sub_08081F00(u32*, u32*);
extern u16 gMapDataTopSpecial[0x2000];
extern u16 gUnk_02019EE0[];
extern u16 gMapDataBottomSpecial[];
NONMATCH("asm/non_matching/button/sub_08081E6C.inc", void sub_08081E6C(Entity* this)) {
u32 r4;
u16 *tmp, *r1;
@@ -205,7 +205,7 @@ NONMATCH("asm/non_matching/button/sub_08081E6C.inc", void sub_08081E6C(Entity* t
tmp = r1 + 0x3802;
r1 += 0x3002 + r4;
tmp = tmp + (*r1 << 2);
tmp2 = (r5 == 2 ? gMapDataTopSpecial : gUnk_02019EE0);
tmp2 = (r5 == 2 ? gMapDataTopSpecial : gMapDataBottomSpecial);
tmp2 += (((0x3f & r6) << 1) + ((0xfc0 & r6) << 2)) << 1;
if (sub_08081F00((u32*)tmp2, (u32*)tmp))
return;
+23 -23
View File
@@ -74,8 +74,8 @@ void sub_0808E818(Entity* this) {
return;
}
if (this->type2 != gUnk_02019EE0.unk6) {
this->type2 = gUnk_02019EE0.unk6;
if (this->type2 != gMapDataBottomSpecial.unk6) {
this->type2 = gMapDataBottomSpecial.unk6;
this->field_0x68.HWORD = CheckGlobalFlag(EZERO_1ST) == 0 ? 0x400 : 0x100;
this->field_0x70.BYTES.byte0 = 4;
this->animationState = 2;
@@ -83,7 +83,7 @@ void sub_0808E818(Entity* this) {
LoadPalettes(&gGlobalGfxAndPalettes[var1], 31, 1);
}
if (gUnk_02032EC0.lastState == 0) {
if (gUI.lastState == 0) {
if (gInput.heldKeys & L_BUTTON) {
switch (gInput.newKeys) {
case DPAD_UP:
@@ -118,13 +118,13 @@ void sub_0808E818(Entity* this) {
static bool32 sub_0808E950(void) {
bool32 result = FALSE;
switch (gUnk_02032EC0.lastState) {
switch (gUI.lastState) {
case 0:
case 4:
case 5:
case 6:
case 7:
result = gUnk_02019EE0.saveStatus[gUnk_02019EE0.unk6] == 1;
result = gMapDataBottomSpecial.saveStatus[gMapDataBottomSpecial.unk6] == 1;
break;
}
return result;
@@ -182,11 +182,11 @@ void sub_0808EA28(Entity* this) {
}
}
if (this->type == gUnk_02019EE0.unk6) {
if (this->type == gMapDataBottomSpecial.unk6) {
var0 = 12;
var1 = 1;
} else {
if (gUnk_02032EC0.lastState == 5 && this->type == gUnk_02019EE0.unk7) {
if (gUI.lastState == 5 && this->type == gMapDataBottomSpecial.unk7) {
var0 = 13;
var1 = 2;
} else {
@@ -198,14 +198,14 @@ void sub_0808EA28(Entity* this) {
this->palette.b.b0 = var0;
this->spriteRendering.b3 = var1;
sub_0808EABC(this);
gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this);
gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this);
}
void sub_0808EABC(Entity* this) {
int var0 = -72;
int var1 = this->type * 32 + 40;
int var2 = gUnk_02019EE0.unk6 == this->type;
switch (gUnk_02032EC0.lastState) {
int var2 = gMapDataBottomSpecial.unk6 == this->type;
switch (gUI.lastState) {
case 0:
var0 = 24;
break;
@@ -251,7 +251,7 @@ void sub_0808EABC(Entity* this) {
}
void sub_0808EB74(Entity* this) {
Entity* entity = sub_0808EC80(gUnk_02019EE0.unk6);
Entity* entity = sub_0808EC80(gMapDataBottomSpecial.unk6);
if (entity) {
this->x.WORD = entity->x.WORD;
this->y.WORD = entity->y.WORD;
@@ -268,7 +268,7 @@ void sub_0808EBB8(Entity* this) {
u32 x, y;
Entity* entity;
switch (gUnk_02032EC0.lastState) {
switch (gUI.lastState) {
case 4:
var0 = gMenu.column_idx + 4;
break;
@@ -298,7 +298,7 @@ void sub_0808EBB8(Entity* this) {
x = 112;
break;
case 2:
var0 = gUnk_02019EE0.unk7;
var0 = gMapDataBottomSpecial.unk7;
if (var0 == 4) {
var0 = 7;
}
@@ -337,12 +337,12 @@ void sub_0808ECBC(Entity* this) {
const struct_08121CD4* var3;
var0 = gMenu.column_idx;
switch (gUnk_02032EC0.lastState) {
switch (gUI.lastState) {
case 4:
var1 = 1;
break;
case 5:
var0 = gUnk_02019EE0.unk7;
var0 = gMapDataBottomSpecial.unk7;
var1 = 2;
break;
case 6:
@@ -366,12 +366,12 @@ void sub_0808ECBC(Entity* this) {
this->palette.b.b0 = 14;
}
gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this);
gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this);
}
void sub_0808ED64(Entity* this) {
int y = 255;
if (gUnk_02032EC0.lastState == 1 && gGenericMenu.unk10.a[1] != 5) {
if (gUI.lastState == 1 && gGenericMenu.unk10.a[1] != 5) {
this->x.HALF.HI = gGenericMenu.unk10.a[0] * 16 + 28;
y = gGenericMenu.unk10.a[1] * 16 + 58;
}
@@ -380,7 +380,7 @@ void sub_0808ED64(Entity* this) {
void sub_0808ED98(Entity* this) {
int y;
if (gUnk_02032EC0.lastState != 1) {
if (gUI.lastState != 1) {
this->field_0x68.HWORD = 27;
y = -10;
} else {
@@ -408,7 +408,7 @@ void sub_0808EE00(Entity* this) {
this->x.HALF.HI = gUnk_08121D18[var0][var1];
this->field_0x68.HWORD = gUnk_08121D18[var0][var1];
var1 -= var0;
if (gUnk_02032EC0.lastState != 1) {
if (gUI.lastState != 1) {
var1 = 128;
var2 = 176;
} else {
@@ -417,14 +417,14 @@ void sub_0808EE00(Entity* this) {
this->field_0x6a.HWORD = var2;
this->palette.b.b0 = gGenericMenu.unk10.a[1] == 5 && var1 == gGenericMenu.unk10.a[2] ? 11 : 9;
gUnk_02019EE0.isTransitioning |= sub_0808EF6C(this);
gMapDataBottomSpecial.isTransitioning |= sub_0808EF6C(this);
}
void nullsub_522(Entity* this) {
}
void sub_0808EE98(Entity* this) {
this->actionDelay = gUnk_02032EC0.lastState;
this->actionDelay = gUI.lastState;
this->frameIndex = gUnk_08121D48[this->actionDelay];
if (this->actionDelay != 2) {
this->field_0x68.HWORD = 96;
@@ -436,7 +436,7 @@ void sub_0808EE98(Entity* this) {
void sub_0808EED8(Entity* this) {
int var0;
if (gUnk_02032EC0.lastState != 3) {
if (gUI.lastState != 3) {
this->spriteSettings.draw = 0;
} else {
this->spriteSettings.draw = 2;
@@ -447,7 +447,7 @@ void sub_0808EED8(Entity* this) {
void sub_0808EF24(Entity* this) {
int var0;
if (gUnk_02032EC0.lastState != 3) {
if (gUI.lastState != 3) {
this->spriteSettings.draw = 0;
} else {
this->spriteSettings.draw = 2;
+1 -1
View File
@@ -40,7 +40,7 @@ void sub_080851AC(Entity* this) {
}
}
InitializeAnimation(this, this->animationState);
this->field_0x70.WORD = (u32)GetLayerByIndex(this->collisionLayer) + 4 + (COORD_TO_TILE(this) * 2);
this->field_0x70.WORD = (u32)&GetLayerByIndex(this->collisionLayer)->mapData[COORD_TO_TILE(this)];
sub_08085394(this);
}
+1 -1
View File
@@ -2689,7 +2689,7 @@ static void sub_0807332C(Entity* this) {
gRoomControls.camera_target = this;
SetPlayerActionNormal();
} else {
gMain.substate = 3;
gMain.substate = GAMEMAIN_CHANGEAREA;
*(&gMain.pauseInterval + 1) = 1;
SetFade(5, 8);
}
+336 -52
View File
@@ -32,10 +32,6 @@ typedef struct {
u8 unk6[6];
} struct_0811BE48;
extern void gMapDataBottom; // 0x2000
extern void gMapDataTop; // 0x2000
extern u16 gMetatilesBottom[];
extern u16 gMetatilesTop[];
extern u8 gMapData;
extern const u8 gUnk_020176E0[];
extern const ScreenTransitionData gUnk_0813AD88[];
@@ -73,6 +69,19 @@ extern void (*const gUnk_0811C120[])(Entity*);
extern u16 gUnk_0811C268[];
extern ItemBehavior* (*const gUnk_0811BFC8[])(u32);
extern void DeleteLoadedTileEntity(u32, u32);
extern const u8 gUnk_080B3E80[]; // collisionData for tileType?
extern const u8 gUnk_080B37A0[]; // unkData3 for tileType?
extern u8 gUpdateVisibleTiles;
extern u16 gMapDataTopSpecial[];
extern u16 gMapDataBottomSpecial[];
bool32 sub_0807BF88(u32, u32, RoomResInfo*);
void sub_0807BFD0(void);
void sub_08077698(PlayerEntity* this) {
ItemBehavior* puVar2;
u32 uVar3;
@@ -1587,7 +1596,46 @@ void sub_0807B2F8(PlayerEntity* this) {
}
}
ASM_FUNC("asm/non_matching/playerUtils/SetTileType.inc", void SetTileType(u32 a, u32 b, u32 c))
void SetTileType(u32 tileType, u32 position, u32 layer) {
u8 collisionData;
u16 metatile;
LayerStruct* data;
u16* src;
u16* dest;
if (tileType < 0x800) {
DeleteLoadedTileEntity(position, layer);
data = GetLayerByIndex(layer);
metatile = data->unkData2[tileType];
data->mapData[position] = metatile;
collisionData = gUnk_080B3E80[tileType];
data->collisionData[position] = collisionData;
if ((gRoomControls.scroll_flags & 2) != 0) {
gMapBottom.collisionData[position] = collisionData;
}
data->unkData3[position] = gUnk_080B37A0[tileType];
if ((gRoomControls.scroll_flags & 1) == 0) {
u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4;
if (layer != 2) {
dest = gMapDataBottomSpecial + offset;
} else {
dest = gMapDataTopSpecial + offset;
}
src = data->metatiles + metatile * 4;
*dest = *src;
dest[1] = src[1];
dest[0x80] = src[2];
dest[0x81] = src[3];
if (gRoomControls.reload_flags != 1) {
gUpdateVisibleTiles = 1;
}
}
} else if (tileType >= 0x4000) { // The tile type actually directly is a tileIndex
SetTile(tileType, position, layer);
} else {
sub_0807BA8C(position, layer);
}
}
bool32 sub_0807B434(u32 position, u32 layer) {
switch (GetTileType(position, layer)) {
@@ -1626,49 +1674,106 @@ void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) {
}
}
void sub_0807B820(u32 param_1) {
SetTileType(620, param_1 - 65, 1);
SetTileType(627, param_1 - 65, 2);
SetTileType(621, param_1 - 64, 1);
SetTileType(628, param_1 - 64, 2);
SetTileType(622, param_1 - 63, 1);
SetTileType(629, param_1 - 63, 2);
SetTileType(623, param_1 - 1, 1);
SetTileType(624, param_1, 1);
SetTileType(626, param_1 + 1, 1);
void sub_0807B820(u32 position) {
SetTileType(0x26c, position + TILE_POS(-1, -1), 1);
SetTileType(0x273, position + TILE_POS(-1, -1), 2);
SetTileType(0x26d, position + TILE_POS(0, -1), 1);
SetTileType(0x274, position + TILE_POS(0, -1), 2);
SetTileType(0x26e, position + TILE_POS(1, -1), 1);
SetTileType(0x275, position + TILE_POS(1, -1), 2);
SetTileType(0x26f, position + TILE_POS(-1, 0), 1);
SetTileType(0x270, position, 1);
SetTileType(0x272, position + TILE_POS(1, 0), 1);
}
void sub_0807B8A8(u32 param_1) {
SetTileType(636, param_1 - 65, 1);
SetTileType(643, param_1 - 65, 2);
SetTileType(637, param_1 - 64, 1);
SetTileType(644, param_1 - 64, 2);
SetTileType(638, param_1 - 63, 1);
SetTileType(645, param_1 - 63, 2);
SetTileType(639, param_1 - 1, 1);
SetTileType(640, param_1, 1);
SetTileType(642, param_1 + 1, 1);
void sub_0807B8A8(u32 position) {
SetTileType(0x27c, position + TILE_POS(-1, -1), 1);
SetTileType(0x283, position + TILE_POS(-1, -1), 2);
SetTileType(0x27d, position + TILE_POS(0, -1), 1);
SetTileType(0x284, position + TILE_POS(0, -1), 2);
SetTileType(0x27e, position + TILE_POS(1, -1), 1);
SetTileType(0x285, position + TILE_POS(1, -1), 2);
SetTileType(0x27f, position + TILE_POS(-1, 0), 1);
SetTileType(0x280, position, 1);
SetTileType(0x282, position + TILE_POS(1, 0), 1);
}
void sub_0807B930(int param_1) {
SetTileType(652, param_1 - 65, 1);
SetTileType(659, param_1 - 65, 2);
SetTileType(653, param_1 - 64, 1);
SetTileType(660, param_1 - 64, 2);
SetTileType(654, param_1 - 63, 1);
SetTileType(661, param_1 - 63, 2);
SetTileType(655, param_1 - 1, 1);
SetTileType(656, param_1, 1);
SetTileType(658, param_1 + 1, 1);
void sub_0807B930(u32 position) {
SetTileType(0x28c, position + TILE_POS(-1, -1), 1);
SetTileType(0x293, position + TILE_POS(-1, -1), 2);
SetTileType(0x28d, position + TILE_POS(0, -1), 1);
SetTileType(0x294, position + TILE_POS(0, -1), 2);
SetTileType(0x28e, position + TILE_POS(1, -1), 1);
SetTileType(0x295, position + TILE_POS(1, -1), 2);
SetTileType(0x28f, position + TILE_POS(-1, 0), 1);
SetTileType(0x290, position, 1);
SetTileType(0x292, position + TILE_POS(1, 0), 1);
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B9B8.inc", void sub_0807B9B8(s32 a, s32 b, s32 c))
void sub_0807B9B8(u32 tileIndex, u32 position, u32 layer) {
LayerStruct* data;
u16* src;
u16* dest;
u16 tileType;
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BA8C.inc", void sub_0807BA8C(u32 a, u32 b))
DeleteLoadedTileEntity(position, layer);
data = GetLayerByIndex(layer);
data->mapData[position] = tileIndex;
tileType = data->metatileTypes[tileIndex];
data->collisionData[position] = gUnk_080B3E80[tileType];
data->unkData3[position] = gUnk_080B37A0[tileType];
if ((gRoomControls.scroll_flags & 1) == 0) {
u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4;
if (layer != 2) {
dest = gMapDataBottomSpecial + offset;
} else {
dest = gMapDataTopSpecial + offset;
}
src = data->metatiles + tileIndex * 4;
*dest = *src;
dest[1] = src[1];
dest[0x80] = src[2];
dest[0x81] = src[3];
if (gRoomControls.reload_flags != 1) {
gUpdateVisibleTiles = 1;
}
}
}
void sub_0807BB68(s16* param_1, u32 param_2, u32 param_3) {
void sub_0807BA8C(u32 position, u32 layer) {
u32 tileIndex;
u32 tileType;
LayerStruct* data;
u16* dest;
u16* src;
DeleteLoadedTileEntity(position, layer);
data = GetLayerByIndex(layer);
data->mapData[position] = tileIndex = data->mapDataClone[position];
tileType = data->metatileTypes[tileIndex];
data->collisionData[position] = gUnk_080B3E80[tileType];
data->unkData3[position] = gUnk_080B37A0[tileType];
if ((gRoomControls.scroll_flags & 1) == 0) {
u32 offset = (position & 0x3f) * 2 + (position & 0xfc0) * 4;
if (layer != 2) {
dest = gMapDataBottomSpecial + offset;
} else {
dest = gMapDataTopSpecial + offset;
}
src = &data->metatiles[tileIndex * 4];
dest[0] = src[0];
dest[1] = src[1];
dest[0x80] = src[2];
dest[0x81] = src[3];
if (gRoomControls.reload_flags != 1) {
gUpdateVisibleTiles = 1;
}
}
}
void sub_0807BB68(s16* param_1, u32 basePosition, u32 layer) {
while (param_1[0] != -1) {
SetTileType((u16)param_1[0], param_2 + param_1[1], param_3);
SetTileType((u16)param_1[0], basePosition + param_1[1], layer);
param_1 += 2;
}
}
@@ -1686,15 +1791,157 @@ void sub_0807BB98(s32 basePosition, u32 layer, u32 width, u32 height) {
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BBE4.inc", void sub_0807BBE4())
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BC84.inc", void sub_0807BC84())
void sub_0807BC84(void) {
s32 height;
u32 width;
u8* puVar3;
u8* puVar4;
u8* puVar5;
u8* puVar6;
u32 index;
width = (u32)(gRoomControls.width >> 4);
if (width == 0x40) {
width = 0x3f;
}
puVar4 = gMapBottom.collisionData + width;
puVar6 = gMapBottom.collisionData + 0x3f;
puVar3 = gMapTop.collisionData + width;
puVar5 = gMapTop.collisionData + 0x3f;
index = 0;
while (index < 0x40) {
*puVar4 = 0xff;
*puVar6 = 0xff;
*puVar3 = 0xff;
*puVar5 = 0xff;
puVar4 += 0x40;
puVar6 += 0x40;
puVar3 += 0x40;
puVar5 += 0x40;
index++;
}
height = (gRoomControls.height & 0xfff0) * 4;
puVar4 = gMapBottom.collisionData + height;
puVar6 = gMapBottom.collisionData + 0xfc0;
puVar3 = gMapTop.collisionData + height;
puVar5 = gMapTop.collisionData + 0xfc0;
index = 0;
while (index < 0x40) {
*puVar4 = 0xff;
puVar4++;
*puVar6 = 0xff;
puVar6++;
*puVar3 = 0xff;
puVar3++;
*puVar5 = 0xff;
puVar5++;
index++;
}
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BD14.inc", bool32 sub_0807BD14(Entity* a, u32 b))
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BDB8.inc", void sub_0807BDB8())
u32 sub_0807BDB8(Entity* this, u32 param_2) {
u32 result = 0xff;
switch (param_2 & 7) {
case 0:
if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) {
result = 0;
}
break;
case 1:
if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) {
result = 0;
}
if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) {
result = 1;
}
break;
case 2:
if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) {
result = 1;
}
break;
case 3:
if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) {
result = 2;
}
if (gRoomControls.width - 10 < this->x.HALF.HI - (u32)gRoomControls.origin_x) {
result = 1;
}
break;
case 4:
if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) {
result = 2;
}
break;
case 5:
if (gRoomControls.height - 10 < this->y.HALF.HI - (u32)gRoomControls.origin_y) {
result = 2;
}
if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) {
result = 3;
}
break;
case 6:
if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) {
result = 3;
}
break;
case 7:
if (this->y.HALF.HI - (u32)gRoomControls.origin_y < 10) {
result = 0;
}
if (this->x.HALF.HI - (u32)gRoomControls.origin_x < 10) {
result = 3;
}
}
return result;
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BEEC.inc", void sub_0807BEEC())
u32 sub_0807BEEC(u32 param_1, u32 param_2, u32 param_3) {
u32 index;
RoomResInfo* ptr;
if ((gArea.filler3[-1] & 1) != 0) {
return gRoomControls.room;
}
switch (param_3) {
case 0:
param_2 = gRoomControls.origin_y - 0x10;
break;
case 1:
param_1 = gRoomControls.origin_x + gRoomControls.width + 0x10;
break;
case 2:
param_2 = gRoomControls.origin_y + gRoomControls.height + 0x10;
break;
case 3:
param_1 = gRoomControls.origin_x - 0x10;
break;
default:
return 0xff;
}
ptr = gArea.roomResInfos;
index = 0;
while (index < 0x40) {
if (sub_0807BF88(param_1, param_2, ptr)) {
return index;
}
index++;
ptr++;
}
return 0xff;
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BF88.inc", void sub_0807BF88())
bool32 sub_0807BF88(u32 param_1, u32 param_2, RoomResInfo* info) {
u32 width = param_1 - info->map_x;
u32 height = param_2 - info->map_y;
bool32 result = FALSE;
if (width < info->pixel_width && height < info->pixel_height) {
result = TRUE;
}
return result;
}
void sub_0807BFA8(void) {
gRoomControls.origin_x = (gArea.pCurrentRoomInfo)->map_x;
@@ -1707,7 +1954,32 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807BFD0.inc", void sub_0807BFD0())
ASM_FUNC("asm/non_matching/playerUtils/LoadRoomGfx.inc", void LoadRoomGfx())
ASM_FUNC("asm/non_matching/playerUtils/sub_0807C460.inc", void sub_0807C460())
void sub_0807C460(void) {
u32 x;
u32 y;
u16* mapBottom = gMapBottom.mapData;
u16* mapTop = gMapTop.mapData;
u32 width = gRoomControls.width >> 4;
u32 height = gRoomControls.height >> 4;
u32 position = 0;
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
if (*mapBottom > 0x3fff) {
SetTile(*mapBottom, position, 1);
}
if (*mapTop > 0x3fff) {
SetTile(*mapTop, position, 2);
}
mapBottom++;
mapTop++;
position++;
}
mapBottom += 0x40 - width;
mapTop += 0x40 - width;
position += 0x40 - width;
}
}
ASM_FUNC("asm/non_matching/playerUtils/sub_0807C4F8.inc", void sub_0807C4F8())
@@ -1719,12 +1991,24 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807C69C.inc", void sub_0807C69C())
ASM_FUNC("asm/non_matching/playerUtils/sub_0807C740.inc", void sub_0807C740())
ASM_FUNC("asm/non_matching/playerUtils/sub_0807C810.inc", void sub_0807C810())
void sub_0807C810(void) {
struct_03004030* ptr;
Entity* player;
RoomControls* ctrls;
sub_0807BFD0();
ptr = &gUnk_03004030;
player = &gPlayerEntity;
ctrls = &gRoomControls;
player->x.HALF.HI = ((ptr->unk_00)->unk_06 & 0x3f) * 0x10 + ctrls->origin_x + ptr->unk_04;
player->y.HALF.HI = (((ptr->unk_00)->unk_06 & 0xfc0) >> 2) + ctrls->origin_y + ptr->unk_06;
sub_080809D4();
gUpdateVisibleTiles = 0;
}
void sub_0807C860(void) {
void CloneMapData(void) {
gRoomTransition.field_0x2c[1] = 1;
MemCopy(&gMapDataBottom, &gMapDataBottom + 0x3000, 0x2000);
MemCopy(&gMapDataTop, &gMapDataTop + 0x3000, 0x2000);
MemCopy(&gMapBottom.mapData, &gMapBottom.mapDataClone, 0x2000);
MemCopy(&gMapTop.mapData, &gMapTop.mapDataClone, 0x2000);
}
void sub_0807C898(void) {
@@ -1749,10 +2033,10 @@ void LoadCompressedMapData(void* dest, u32 offset) {
}
void sub_0807C998(u32* a1) {
LoadCompressedMapData(gMetatilesBottom, a1[0]);
LoadCompressedMapData(gMetatilesBottom - 0x1000, a1[1]);
LoadCompressedMapData(gMetatilesTop, a1[2]);
LoadCompressedMapData(gMetatilesTop - 0x1000, a1[3]);
LoadCompressedMapData(&gMapBottom.metatiles, a1[0]);
LoadCompressedMapData(&gMapBottom.metatileTypes, a1[1]);
LoadCompressedMapData(&gMapTop.metatiles, a1[2]);
LoadCompressedMapData(&gMapTop.metatileTypes, a1[3]);
}
void sub_0807C9D8(u32* a1) {
+1 -1
View File
@@ -91,7 +91,7 @@ bool32 sub_080AB9FC(Entity* this, u32 dir) {
val = (((this->x.HALF.HI - gRoomControls.origin_x) >> 4) & 0x3f) |
((((this->y.HALF.HI - gRoomControls.origin_y) >> 4) & 0x3f) << 6);
val += gUnk_080B4488[dir >> 3];
tmp = layer->_2004[val];
tmp = layer->collisionData[val];
if (tmp <= 0x1f) {
return 0;
}
+1 -1
View File
@@ -2364,7 +2364,7 @@ u32 sub_unk3_DeepwoodShrine_InsideBarrel(void) {
void sub_StateChange_DeepwoodShrine_InsideBarrel(void) {
sub_08058D34();
gArea.areaMetadata |= 0x40;
gMain.substate = 5;
gMain.substate = GAMEMAIN_BARRELUPDATE;
}
u32 sub_unk3_DeepwoodShrineEntry_Main(void) {
+1 -1
View File
@@ -135,7 +135,7 @@ void ClearTilemaps(void) {
gRoomControls.filler3 = 0xffff;
gUnk_03004030.unk_0a = 0xff;
gUnk_02034480.unk_00 = 0;
MemClear(&gUnk_02019EE0, 0x8000);
MemClear(&gMapDataBottomSpecial, 0x8000);
MemClear(&gMapDataTopSpecial, 0x8000);
}
+33 -33
View File
@@ -125,7 +125,7 @@ ASM_FUNC("asm/non_matching/subtask2/sub_080A5C9C.inc", void sub_080A5C9C())
void sub_080A5CFC(u32 menuType, void* param_2, u32 param_3) {
DrawDungeonFeatures(menuType, param_2, param_3);
LoadDungeonMap();
DrawDungeonMap(menuType, &gUnk_02019EE0, 0x400);
DrawDungeonMap(menuType, &gMapDataBottomSpecial, 0x400);
}
ASM_FUNC("asm/non_matching/subtask2/sub_080A5D1C.inc", void sub_080A5D1C())
@@ -297,46 +297,46 @@ void SetMenuType(u32 menuType) {
}
void ResetUI(void) {
MemClear(&gUnk_02032EC0, 0x3b4);
MemClear(&gUI, 0x3b4);
}
void MenuFadeIn(u32 param_1, u32 param_2) {
if (gUnk_02032EC0.nextToLoad == 0) {
MemClear(&gUnk_02032EC0, 0x3b4);
gUnk_02032EC0.lastState = param_1;
gUnk_02032EC0.field_0x3 = param_2;
gUnk_02032EC0.pauseFadeIn = gMain.substate;
if (gUI.nextToLoad == 0) {
MemClear(&gUI, 0x3b4);
gUI.lastState = param_1;
gUI.field_0x3 = param_2;
gUI.pauseFadeIn = gMain.substate;
} else {
gUnk_02032EC0.state = param_1;
gUnk_02032EC0.field_0x5 = param_2;
gUnk_02032EC0.nextToLoad = 1;
gUI.state = param_1;
gUI.field_0x5 = param_2;
gUI.nextToLoad = 1;
}
gUnk_02032EC0.field_0x6 = 0;
gUnk_02032EC0.isLoading = 0xffff;
gUnk_02032EC0.fadeInTime = 0x20;
gMain.substate = 7;
gUI.field_0x6 = 0;
gUI.isLoading = 0xffff;
gUI.fadeInTime = 0x20;
gMain.substate = GAMEMAIN_SUBTASK;
SetFade(5, 0x20);
gUnk_02018EB0[0] = 0;
gUnk_02018EB0[1] = 0;
}
void sub_080A71A4(u32 param_1, u32 param_2, u32 param_3) {
if (gUnk_02032EC0.nextToLoad == 0) {
gUnk_02032EC0.fillerC[2] = param_3;
if (gUI.nextToLoad == 0) {
gUI.fillerC[2] = param_3;
} else {
gUnk_02032EC0.fillerC[3] = param_3;
gUI.fillerC[3] = param_3;
}
MenuFadeIn(param_1, param_2);
}
void sub_080A71C4(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
MenuFadeIn(param_1, param_2);
gUnk_02032EC0.isLoading = param_3;
gUnk_02032EC0.fadeInTime = param_4;
gUI.isLoading = param_3;
gUI.fadeInTime = param_4;
}
void Subtask_Exit(void) {
gUnk_02032EC0.nextToLoad = 3;
gUI.nextToLoad = 3;
SetFade(5, 0x20);
}
@@ -347,19 +347,19 @@ void sub_080A71F4(ScreenTransitionData* exitTransition) {
DeleteAllEntities();
sub_0805E974();
DeleteAllEntities();
gMain.state = 1;
gMain.substate = 0;
gMain.state = GAMETASK_INIT;
gMain.substate = GAMEMAIN_INITROOM;
}
void GameMain_Subtask(void) {
if (gUnk_02032EC0.nextToLoad < 3) {
if (gUnk_02032EC0.state != 0) {
gUnk_02032EC0.field_0x3 = gUnk_02032EC0.field_0x5;
gUnk_02032EC0.lastState = gUnk_02032EC0.state;
gUnk_02032EC0.state = 0;
if (gUI.nextToLoad < 3) {
if (gUI.state != 0) {
gUI.field_0x3 = gUI.field_0x5;
gUI.lastState = gUI.state;
gUI.state = 0;
}
}
gUnk_0812901C[gUnk_02032EC0.nextToLoad]();
gUnk_0812901C[gUI.nextToLoad]();
}
ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeIn.inc", void Subtask_FadeIn())
@@ -377,7 +377,7 @@ void Subtask_Init(void) {
ResetPalettes();
ResetPaletteTable(0);
gGFXSlots.unk0 = 1;
gUnk_02032EC0.nextToLoad = 2;
gUI.nextToLoad = 2;
gRoomTransition.field_0x2c[4] = 1;
}
}
@@ -387,9 +387,9 @@ ASM_FUNC("asm/non_matching/subtask2/Subtask_FadeOut.inc", void Subtask_FadeOut()
void Subtask_Die(void) {
sub_080A74F4();
if (gFadeControl.active == 0) {
gMain.substate = gUnk_02032EC0.pauseFadeIn;
gUnk_02032EC0.nextToLoad = gFadeControl.active;
gUnk_02032EC0.lastState = gFadeControl.active;
gMain.substate = gUI.pauseFadeIn;
gUI.nextToLoad = gFadeControl.active;
gUI.lastState = gFadeControl.active;
ResetSystemPriority();
}
}
@@ -408,5 +408,5 @@ void sub_080A74F4(void) {
}
void Subtask_Update(void) {
gSubtasks[gUnk_02032EC0.lastState]();
gSubtasks[gUI.lastState]();
}
+6 -5
View File
@@ -16,6 +16,7 @@
#include "save.h"
#include "area.h"
#include "item.h"
#include "game.h"
typedef struct {
u8 filler0[0x4];
@@ -123,8 +124,8 @@ static const u8 unk[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#endif
static u32 AdvanceIntroSequence(u32 transition) {
gUnk_02032EC0.lastState = transition;
gMain.state = 2;
gUI.lastState = transition;
gMain.state = GAMETASK_MAIN;
MemClear(&gIntroState, sizeof(gIntroState));
SetFade(7, 8);
}
@@ -134,18 +135,18 @@ void TitleTask(void) {
switch (gMain.state) {
case 0:
MessageInitialize();
MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0));
MemClear(&gUI, sizeof(gUI));
AdvanceIntroSequence(0);
break;
case 1:
sIntroSequenceHandlers[gUnk_02032EC0.lastState]();
sIntroSequenceHandlers[gUI.lastState]();
break;
case 2:
if (gFadeControl.active) {
return;
}
DispReset(1);
gMain.state = 1;
gMain.state = GAMETASK_INIT;
break;
}
CopyOAM();