mirror of
https://github.com/YohannDR/mzm.git
synced 2025-02-21 14:00:31 +00:00
Decompile erase SRAM menu
This commit is contained in:
parent
3ed34562fc
commit
e0e1d723fc
@ -1371,8 +1371,8 @@ lbl_080033d0: .4byte 0x84400004
|
||||
lbl_080033d4: .4byte 0x040000c6
|
||||
lbl_080033d8: .4byte 0x040000d2
|
||||
|
||||
thumb_func_start sub_080033dc
|
||||
sub_080033dc: @ 0x080033dc
|
||||
thumb_func_start unk_33dc
|
||||
unk_33dc: @ 0x080033dc
|
||||
push {r4, r5, lr}
|
||||
sub sp, #4
|
||||
ldr r5, lbl_08003440 @ =0x03001d00
|
||||
|
@ -19766,7 +19766,7 @@ lbl_0806135e:
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
lbl_08061370:
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
ldr r2, lbl_080613fc @ =0x03000bf4
|
||||
ldr r0, lbl_08061400 @ =0x03000bf6
|
||||
movs r3, #0x80
|
||||
|
@ -25265,7 +25265,7 @@ lbl_080734a4:
|
||||
lbl_080734b0: .4byte 0x08754bc8
|
||||
lbl_080734b4: .4byte 0x00006d40
|
||||
lbl_080734b8:
|
||||
bl sub_08000c04
|
||||
bl EraseSRAM
|
||||
ldr r1, lbl_080734e0 @ =0x0841147c
|
||||
ldr r2, lbl_080734e4 @ =0x03000014
|
||||
movs r0, #0x10
|
||||
@ -30116,908 +30116,3 @@ sub_08075c04: @ 0x08075c04
|
||||
.align 2, 0
|
||||
lbl_08075c28: .4byte 0x08075bf9
|
||||
lbl_08075c2c: .4byte 0x03000c1d
|
||||
|
||||
thumb_func_start erase_sram_main
|
||||
erase_sram_main: @ 0x08075c30
|
||||
push {r4, r5, r6, lr}
|
||||
movs r6, #0
|
||||
ldr r2, lbl_08075c58 @ =0x08754bc4
|
||||
ldr r1, [r2]
|
||||
ldrh r0, [r1, #4]
|
||||
adds r0, #1
|
||||
strh r0, [r1, #4]
|
||||
ldr r0, lbl_08075c5c @ =0x03000c72
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
adds r5, r2, #0
|
||||
adds r4, r0, #0
|
||||
cmp r1, #7
|
||||
bls lbl_08075c4e
|
||||
b lbl_08075d6c
|
||||
lbl_08075c4e:
|
||||
lsls r0, r1, #2
|
||||
ldr r1, lbl_08075c60 @ =lbl_08075c64
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
lbl_08075c58: .4byte 0x08754bc4
|
||||
lbl_08075c5c: .4byte 0x03000c72
|
||||
lbl_08075c60: .4byte lbl_08075c64
|
||||
lbl_08075c64: @ jump table
|
||||
.4byte lbl_08075c84 @ case 0
|
||||
.4byte lbl_08075c94 @ case 1
|
||||
.4byte lbl_08075cbc @ case 2
|
||||
.4byte lbl_08075cfc @ case 3
|
||||
.4byte lbl_08075d0a @ case 4
|
||||
.4byte lbl_08075d28 @ case 5
|
||||
.4byte lbl_08075d40 @ case 6
|
||||
.4byte lbl_08075d62 @ case 7
|
||||
lbl_08075c84:
|
||||
bl erase_sram_menu_init
|
||||
ldr r1, lbl_08075c90 @ =0x03000c72
|
||||
ldrh r0, [r1]
|
||||
b lbl_08075d48
|
||||
.align 2, 0
|
||||
lbl_08075c90: .4byte 0x03000c72
|
||||
lbl_08075c94:
|
||||
ldr r1, lbl_08075ca4 @ =0x030013ae
|
||||
ldrh r3, [r1]
|
||||
adds r2, r3, #0
|
||||
cmp r2, #0
|
||||
beq lbl_08075ca8
|
||||
subs r0, r3, #1
|
||||
strh r0, [r1]
|
||||
b lbl_08075d6c
|
||||
.align 2, 0
|
||||
lbl_08075ca4: .4byte 0x030013ae
|
||||
lbl_08075ca8:
|
||||
ldr r1, [r5]
|
||||
movs r0, #0xef
|
||||
strh r0, [r1, #0xa]
|
||||
strb r3, [r1, #6]
|
||||
ldrh r0, [r4]
|
||||
adds r0, #1
|
||||
strh r0, [r4]
|
||||
ldr r0, [r5]
|
||||
strh r2, [r0, #4]
|
||||
b lbl_08075d6c
|
||||
lbl_08075cbc:
|
||||
ldr r4, lbl_08075ce4 @ =0x03000c74
|
||||
bl erase_sram_menu_process_input
|
||||
strb r0, [r4]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq lbl_08075d6c
|
||||
ldr r0, lbl_08075ce8 @ =0x08754bc4
|
||||
ldr r1, [r0]
|
||||
movs r0, #0
|
||||
strh r0, [r1, #4]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r4, r0]
|
||||
cmp r0, #1
|
||||
bne lbl_08075cf0
|
||||
ldr r1, lbl_08075cec @ =0x03000c72
|
||||
movs r0, #5
|
||||
strh r0, [r1]
|
||||
b lbl_08075d6c
|
||||
.align 2, 0
|
||||
lbl_08075ce4: .4byte 0x03000c74
|
||||
lbl_08075ce8: .4byte 0x08754bc4
|
||||
lbl_08075cec: .4byte 0x03000c72
|
||||
lbl_08075cf0:
|
||||
ldr r1, lbl_08075cf8 @ =0x03000c72
|
||||
movs r0, #3
|
||||
strh r0, [r1]
|
||||
b lbl_08075d6c
|
||||
.align 2, 0
|
||||
lbl_08075cf8: .4byte 0x03000c72
|
||||
lbl_08075cfc:
|
||||
ldr r2, [r5]
|
||||
ldrh r0, [r2, #4]
|
||||
cmp r0, #0x28
|
||||
bls lbl_08075d6c
|
||||
movs r1, #0
|
||||
movs r0, #0xff
|
||||
b lbl_08075d34
|
||||
lbl_08075d0a:
|
||||
ldr r1, lbl_08075d20 @ =0x030013ae
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0xf
|
||||
bls lbl_08075d48
|
||||
ldr r2, [r5]
|
||||
ldrh r1, [r2, #8]
|
||||
ldr r0, lbl_08075d24 @ =0x0000e0ff
|
||||
ands r0, r1
|
||||
strh r0, [r2, #8]
|
||||
movs r6, #1
|
||||
b lbl_08075d74
|
||||
.align 2, 0
|
||||
lbl_08075d20: .4byte 0x030013ae
|
||||
lbl_08075d24: .4byte 0x0000e0ff
|
||||
lbl_08075d28:
|
||||
ldr r2, [r5]
|
||||
ldrh r0, [r2, #4]
|
||||
cmp r0, #0x28
|
||||
bls lbl_08075d6c
|
||||
movs r1, #0
|
||||
movs r0, #0xbf
|
||||
lbl_08075d34:
|
||||
strh r0, [r2, #0xa]
|
||||
strh r1, [r2, #4]
|
||||
ldrh r0, [r4]
|
||||
adds r0, #1
|
||||
strh r0, [r4]
|
||||
b lbl_08075d6c
|
||||
lbl_08075d40:
|
||||
ldr r1, lbl_08075d50 @ =0x030013ae
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0xf
|
||||
bhi lbl_08075d54
|
||||
lbl_08075d48:
|
||||
adds r0, #1
|
||||
strh r0, [r1]
|
||||
b lbl_08075d6c
|
||||
.align 2, 0
|
||||
lbl_08075d50: .4byte 0x030013ae
|
||||
lbl_08075d54:
|
||||
ldrh r0, [r4]
|
||||
adds r0, #1
|
||||
strh r0, [r4]
|
||||
ldr r1, [r5]
|
||||
movs r0, #0x80
|
||||
strh r0, [r1, #8]
|
||||
b lbl_08075d6c
|
||||
lbl_08075d62:
|
||||
bl sub_080033dc
|
||||
bl sub_08000c04
|
||||
movs r6, #1
|
||||
lbl_08075d6c:
|
||||
cmp r6, #0
|
||||
bne lbl_08075d74
|
||||
bl erase_sram_menu_process_oam
|
||||
lbl_08075d74:
|
||||
adds r0, r6, #0
|
||||
pop {r4, r5, r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start erase_sram_menu_process_input
|
||||
erase_sram_menu_process_input: @ 0x08075d7c
|
||||
push {r4, lr}
|
||||
movs r4, #0
|
||||
ldr r0, lbl_08075d94 @ =0x08754bc4
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, #1]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075d98
|
||||
bl sub_08075dd0
|
||||
b lbl_08075d9e
|
||||
.align 2, 0
|
||||
lbl_08075d94: .4byte 0x08754bc4
|
||||
lbl_08075d98:
|
||||
bl erase_sram_menu_check_for_input
|
||||
adds r4, r0, #0
|
||||
lbl_08075d9e:
|
||||
ldr r0, lbl_08075db8 @ =0x08754bc4
|
||||
ldr r0, [r0]
|
||||
ldr r3, lbl_08075dbc @ =0x030013ae
|
||||
ldrh r1, [r3]
|
||||
ldrb r2, [r0, #6]
|
||||
adds r0, r1, #0
|
||||
cmp r2, r0
|
||||
beq lbl_08075dc4
|
||||
cmp r2, r0
|
||||
bls lbl_08075dc0
|
||||
adds r0, r1, #1
|
||||
b lbl_08075dc2
|
||||
.align 2, 0
|
||||
lbl_08075db8: .4byte 0x08754bc4
|
||||
lbl_08075dbc: .4byte 0x030013ae
|
||||
lbl_08075dc0:
|
||||
subs r0, r1, #1
|
||||
lbl_08075dc2:
|
||||
strh r0, [r3]
|
||||
lbl_08075dc4:
|
||||
bl sub_08076298
|
||||
adds r0, r4, #0
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start sub_08075dd0
|
||||
sub_08075dd0: @ 0x08075dd0
|
||||
push {r4, r5, lr}
|
||||
ldr r0, lbl_08075e00 @ =0x08754bc4
|
||||
ldr r2, [r0]
|
||||
ldrb r1, [r2, #0x1a]
|
||||
adds r5, r0, #0
|
||||
cmp r1, #2
|
||||
beq lbl_08075e72
|
||||
ldrb r1, [r2, #1]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
movs r3, #0
|
||||
strb r0, [r2, #1]
|
||||
ldr r1, [r5]
|
||||
ldrb r0, [r1, #1]
|
||||
strb r0, [r1]
|
||||
ldr r2, [r5]
|
||||
ldrb r0, [r2, #1]
|
||||
cmp r0, #1
|
||||
beq lbl_08075e18
|
||||
cmp r0, #1
|
||||
bgt lbl_08075e04
|
||||
cmp r0, #0
|
||||
beq lbl_08075e0e
|
||||
b lbl_08075e42
|
||||
.align 2, 0
|
||||
lbl_08075e00: .4byte 0x08754bc4
|
||||
lbl_08075e04:
|
||||
cmp r0, #2
|
||||
beq lbl_08075e30
|
||||
cmp r0, #3
|
||||
beq lbl_08075e38
|
||||
b lbl_08075e42
|
||||
lbl_08075e0e:
|
||||
ldr r0, lbl_08075e14 @ =0x08415400
|
||||
b lbl_08075e1a
|
||||
.align 2, 0
|
||||
lbl_08075e14: .4byte 0x08415400
|
||||
lbl_08075e18:
|
||||
ldr r0, lbl_08075e2c @ =0x08415401
|
||||
lbl_08075e1a:
|
||||
ldrb r1, [r0]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x3a
|
||||
strb r1, [r0]
|
||||
ldr r0, [r5]
|
||||
adds r0, #0x2a
|
||||
strb r3, [r0]
|
||||
b lbl_08075e42
|
||||
.align 2, 0
|
||||
lbl_08075e2c: .4byte 0x08415401
|
||||
lbl_08075e30:
|
||||
ldr r0, lbl_08075e34 @ =0x08415402
|
||||
b lbl_08075e3a
|
||||
.align 2, 0
|
||||
lbl_08075e34: .4byte 0x08415402
|
||||
lbl_08075e38:
|
||||
ldr r0, lbl_08075e78 @ =0x08415403
|
||||
lbl_08075e3a:
|
||||
ldrb r1, [r0]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x2a
|
||||
strb r1, [r0]
|
||||
lbl_08075e42:
|
||||
ldr r1, [r5]
|
||||
adds r1, #0x2b
|
||||
ldrb r3, [r1]
|
||||
movs r2, #0x3f
|
||||
adds r0, r2, #0
|
||||
ands r0, r3
|
||||
movs r4, #0x80
|
||||
orrs r0, r4
|
||||
strb r0, [r1]
|
||||
ldr r1, [r5]
|
||||
adds r1, #0x3b
|
||||
ldrb r3, [r1]
|
||||
adds r0, r2, #0
|
||||
ands r0, r3
|
||||
orrs r0, r4
|
||||
strb r0, [r1]
|
||||
ldr r1, [r5]
|
||||
movs r0, #1
|
||||
strb r0, [r1, #0x1a]
|
||||
ldr r1, [r5]
|
||||
ldrb r0, [r1, #0x1b]
|
||||
ands r2, r0
|
||||
orrs r2, r4
|
||||
strb r2, [r1, #0x1b]
|
||||
lbl_08075e72:
|
||||
pop {r4, r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
lbl_08075e78: .4byte 0x08415403
|
||||
|
||||
thumb_func_start erase_sram_menu_check_for_input
|
||||
erase_sram_menu_check_for_input: @ 0x08075e7c
|
||||
push {r4, r5, r6, lr}
|
||||
movs r6, #0
|
||||
movs r4, #0
|
||||
ldr r0, lbl_08075e98 @ =0x08754bc4
|
||||
ldr r2, [r0]
|
||||
ldrb r3, [r2]
|
||||
adds r5, r0, #0
|
||||
cmp r3, #1
|
||||
beq lbl_08075ec8
|
||||
cmp r3, #1
|
||||
bgt lbl_08075e9c
|
||||
cmp r3, #0
|
||||
beq lbl_08075ea6
|
||||
b lbl_08075f4e
|
||||
.align 2, 0
|
||||
lbl_08075e98: .4byte 0x08754bc4
|
||||
lbl_08075e9c:
|
||||
cmp r3, #2
|
||||
beq lbl_08075ef0
|
||||
cmp r3, #3
|
||||
beq lbl_08075f18
|
||||
b lbl_08075f4e
|
||||
lbl_08075ea6:
|
||||
ldr r0, lbl_08075eb8 @ =0x03001380
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075ebc
|
||||
movs r0, #0x81
|
||||
b lbl_08075f26
|
||||
.align 2, 0
|
||||
lbl_08075eb8: .4byte 0x03001380
|
||||
lbl_08075ebc:
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f4e
|
||||
movs r6, #2
|
||||
b lbl_08075f54
|
||||
lbl_08075ec8:
|
||||
ldr r0, lbl_08075ed8 @ =0x03001380
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075edc
|
||||
movs r0, #0x80
|
||||
b lbl_08075f26
|
||||
.align 2, 0
|
||||
lbl_08075ed8: .4byte 0x03001380
|
||||
lbl_08075edc:
|
||||
ands r3, r1
|
||||
cmp r3, #0
|
||||
beq lbl_08075f4e
|
||||
movs r0, #0x82
|
||||
strb r0, [r2, #1]
|
||||
movs r4, #2
|
||||
ldr r1, [r5]
|
||||
movs r0, #4
|
||||
strb r0, [r1, #6]
|
||||
b lbl_08075f4e
|
||||
lbl_08075ef0:
|
||||
ldr r0, lbl_08075f00 @ =0x03001380
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f04
|
||||
movs r0, #0x83
|
||||
b lbl_08075f26
|
||||
.align 2, 0
|
||||
lbl_08075f00: .4byte 0x03001380
|
||||
lbl_08075f04:
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f4e
|
||||
movs r0, #0x80
|
||||
strb r0, [r2, #1]
|
||||
ldr r0, [r5]
|
||||
strb r6, [r0, #6]
|
||||
movs r4, #3
|
||||
b lbl_08075f4e
|
||||
lbl_08075f18:
|
||||
ldr r0, lbl_08075f2c @ =0x03001380
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f30
|
||||
movs r0, #0x82
|
||||
lbl_08075f26:
|
||||
strb r0, [r2, #1]
|
||||
movs r4, #4
|
||||
b lbl_08075f4e
|
||||
.align 2, 0
|
||||
lbl_08075f2c: .4byte 0x03001380
|
||||
lbl_08075f30:
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f3c
|
||||
movs r6, #1
|
||||
b lbl_08075f54
|
||||
lbl_08075f3c:
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq lbl_08075f4e
|
||||
movs r0, #0x80
|
||||
strb r0, [r2, #1]
|
||||
movs r4, #3
|
||||
ldr r0, [r5]
|
||||
strb r6, [r0, #6]
|
||||
lbl_08075f4e:
|
||||
movs r0, #0
|
||||
cmp r0, #0
|
||||
beq lbl_08075f6a
|
||||
lbl_08075f54:
|
||||
ldr r1, [r5]
|
||||
movs r0, #2
|
||||
strb r0, [r1, #0x1a]
|
||||
ldr r2, [r5]
|
||||
ldrb r1, [r2, #0x1b]
|
||||
movs r0, #0x3f
|
||||
ands r0, r1
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x1b]
|
||||
movs r4, #1
|
||||
lbl_08075f6a:
|
||||
ldr r0, lbl_08075f84 @ =0x08415404
|
||||
lsls r1, r4, #1
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq lbl_08075f7a
|
||||
bl SoundPlay
|
||||
lbl_08075f7a:
|
||||
adds r0, r6, #0
|
||||
pop {r4, r5, r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
lbl_08075f84: .4byte 0x08415404
|
||||
|
||||
thumb_func_start erase_sram_menu_init
|
||||
erase_sram_menu_init: @ 0x08075f88
|
||||
push {r4, r5, r6, lr}
|
||||
sub sp, #4
|
||||
ldr r3, lbl_08076110 @ =0x04000208
|
||||
movs r4, #0
|
||||
strh r4, [r3]
|
||||
ldr r2, lbl_08076114 @ =0x04000004
|
||||
ldrh r1, [r2]
|
||||
ldr r0, lbl_08076118 @ =0x0000ffef
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r2, lbl_0807611c @ =0x04000200
|
||||
ldrh r1, [r2]
|
||||
ldr r0, lbl_08076120 @ =0x0000fffd
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r0, lbl_08076124 @ =0x04000202
|
||||
movs r5, #2
|
||||
strh r5, [r0]
|
||||
movs r0, #1
|
||||
strh r0, [r3]
|
||||
ldr r0, lbl_08076128 @ =sub_08076358
|
||||
bl CallbackSetVBlank
|
||||
ldr r1, lbl_0807612c @ =0x04000050
|
||||
movs r0, #0xbf
|
||||
strh r0, [r1]
|
||||
ldr r2, lbl_08076130 @ =0x04000054
|
||||
ldr r1, lbl_08076134 @ =0x030013ae
|
||||
movs r0, #0x10
|
||||
strh r0, [r1]
|
||||
strh r0, [r2]
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
ldr r1, lbl_08076138 @ =0x040000d4
|
||||
mov r0, sp
|
||||
str r0, [r1]
|
||||
ldr r0, lbl_0807613c @ =0x030016c4
|
||||
str r0, [r1, #4]
|
||||
ldr r0, lbl_08076140 @ =0x8500018a
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
bl ClearGFXRAM
|
||||
ldr r0, lbl_08076144 @ =0x03001382
|
||||
strb r4, [r0]
|
||||
bl ResetFreeOAM
|
||||
ldr r2, lbl_08076148 @ =0x08754bc4
|
||||
ldr r1, [r2]
|
||||
ldr r0, lbl_0807614c @ =0x03000020
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1, #2]
|
||||
ldr r2, [r2]
|
||||
ldrb r0, [r2, #2]
|
||||
subs r0, #2
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #4
|
||||
bls lbl_08076000
|
||||
strb r5, [r2, #2]
|
||||
lbl_08076000:
|
||||
ldr r1, lbl_08076150 @ =0x04000006
|
||||
ldrh r0, [r1]
|
||||
subs r0, #0x15
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldr r2, lbl_08076154 @ =0x08411608
|
||||
ldr r3, lbl_08076158 @ =0x08411528
|
||||
ldr r5, lbl_0807615c @ =0x084122d8
|
||||
cmp r0, #0x8b
|
||||
bhi lbl_08076020
|
||||
lbl_08076014:
|
||||
ldrh r0, [r1]
|
||||
subs r0, #0x15
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x8b
|
||||
bls lbl_08076014
|
||||
lbl_08076020:
|
||||
ldr r0, lbl_08076138 @ =0x040000d4
|
||||
str r2, [r0]
|
||||
movs r2, #0xa0
|
||||
lsls r2, r2, #0x13
|
||||
str r2, [r0, #4]
|
||||
ldr r1, lbl_08076160 @ =0x800000d0
|
||||
str r1, [r0, #8]
|
||||
ldr r1, [r0, #8]
|
||||
str r3, [r0]
|
||||
ldr r1, lbl_08076164 @ =0x05000200
|
||||
str r1, [r0, #4]
|
||||
ldr r1, lbl_08076168 @ =0x80000070
|
||||
str r1, [r0, #8]
|
||||
ldr r0, [r0, #8]
|
||||
movs r4, #0
|
||||
strh r4, [r2]
|
||||
ldr r1, lbl_0807616c @ =0x06001000
|
||||
adds r0, r5, #0
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_08076170 @ =0x08411b64
|
||||
ldr r1, lbl_08076174 @ =0x06012000
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_08076178 @ =0x0844b808
|
||||
ldr r1, lbl_0807617c @ =0x06001800
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_08076180 @ =0x0844c47c
|
||||
ldr r1, lbl_08076184 @ =0x06003400
|
||||
bl LZ77UncompVRAM
|
||||
ldr r5, lbl_08076188 @ =0x08760420
|
||||
ldr r6, lbl_08076148 @ =0x08754bc4
|
||||
ldr r0, [r6]
|
||||
ldrb r0, [r0, #2]
|
||||
lsls r0, r0, #3
|
||||
adds r0, r0, r5
|
||||
ldr r0, [r0]
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #0x13
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, [r6]
|
||||
ldrb r0, [r0, #2]
|
||||
lsls r0, r0, #3
|
||||
adds r1, r5, #4
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, lbl_0807618c @ =0x06011000
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, [r6]
|
||||
ldrb r0, [r0, #2]
|
||||
lsls r0, r0, #3
|
||||
adds r0, r0, r5
|
||||
ldr r0, [r0]
|
||||
ldr r1, lbl_08076190 @ =0x06010000
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_08076194 @ =0x08414c1c
|
||||
ldr r1, lbl_08076198 @ =0x0600d000
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_0807619c @ =0x08414e40
|
||||
ldr r1, lbl_080761a0 @ =0x0600f000
|
||||
bl LZ77UncompVRAM
|
||||
ldr r0, lbl_080761a4 @ =0x04000008
|
||||
strh r4, [r0]
|
||||
adds r0, #4
|
||||
strh r4, [r0]
|
||||
ldr r1, lbl_080761a8 @ =0x0400000a
|
||||
ldr r2, lbl_080761ac @ =0x00001a01
|
||||
adds r0, r2, #0
|
||||
strh r0, [r1]
|
||||
adds r1, #4
|
||||
ldr r2, lbl_080761b0 @ =0x00001e03
|
||||
adds r0, r2, #0
|
||||
strh r0, [r1]
|
||||
ldr r0, lbl_080761b4 @ =0x030013b2
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_080761b8 @ =0x04000052
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_080761bc @ =0x03000c75
|
||||
strb r4, [r0]
|
||||
ldr r0, lbl_080761c0 @ =0x03000bf8
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_080761c4 @ =0x03000bfa
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_080761c8 @ =0x03000c00
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_080761cc @ =0x03000c02
|
||||
strh r4, [r0]
|
||||
bl sub_080761d4
|
||||
bl sub_08076298
|
||||
bl erase_sram_menu_process_oam
|
||||
bl sub_080762e0
|
||||
ldr r2, [r6]
|
||||
ldr r0, lbl_0807612c @ =0x04000050
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r2, #0xa]
|
||||
movs r1, #0xd0
|
||||
lsls r1, r1, #5
|
||||
strh r1, [r2, #8]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x13
|
||||
strh r1, [r0]
|
||||
ldr r0, lbl_080761d0 @ =sub_080762e0
|
||||
bl CallbackSetVBlank
|
||||
add sp, #4
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
lbl_08076110: .4byte 0x04000208
|
||||
lbl_08076114: .4byte 0x04000004
|
||||
lbl_08076118: .4byte 0x0000ffef
|
||||
lbl_0807611c: .4byte 0x04000200
|
||||
lbl_08076120: .4byte 0x0000fffd
|
||||
lbl_08076124: .4byte 0x04000202
|
||||
lbl_08076128: .4byte sub_08076358
|
||||
lbl_0807612c: .4byte 0x04000050
|
||||
lbl_08076130: .4byte 0x04000054
|
||||
lbl_08076134: .4byte 0x030013ae
|
||||
lbl_08076138: .4byte 0x040000d4
|
||||
lbl_0807613c: .4byte 0x030016c4
|
||||
lbl_08076140: .4byte 0x8500018a
|
||||
lbl_08076144: .4byte 0x03001382
|
||||
lbl_08076148: .4byte 0x08754bc4
|
||||
lbl_0807614c: .4byte 0x03000020
|
||||
lbl_08076150: .4byte 0x04000006
|
||||
lbl_08076154: .4byte 0x08411608
|
||||
lbl_08076158: .4byte 0x08411528
|
||||
lbl_0807615c: .4byte 0x084122d8
|
||||
lbl_08076160: .4byte 0x800000d0
|
||||
lbl_08076164: .4byte 0x05000200
|
||||
lbl_08076168: .4byte 0x80000070
|
||||
lbl_0807616c: .4byte 0x06001000
|
||||
lbl_08076170: .4byte 0x08411b64
|
||||
lbl_08076174: .4byte 0x06012000
|
||||
lbl_08076178: .4byte 0x0844b808
|
||||
lbl_0807617c: .4byte 0x06001800
|
||||
lbl_08076180: .4byte 0x0844c47c
|
||||
lbl_08076184: .4byte 0x06003400
|
||||
lbl_08076188: .4byte 0x08760420
|
||||
lbl_0807618c: .4byte 0x06011000
|
||||
lbl_08076190: .4byte 0x06010000
|
||||
lbl_08076194: .4byte 0x08414c1c
|
||||
lbl_08076198: .4byte 0x0600d000
|
||||
lbl_0807619c: .4byte 0x08414e40
|
||||
lbl_080761a0: .4byte 0x0600f000
|
||||
lbl_080761a4: .4byte 0x04000008
|
||||
lbl_080761a8: .4byte 0x0400000a
|
||||
lbl_080761ac: .4byte 0x00001a01
|
||||
lbl_080761b0: .4byte 0x00001e03
|
||||
lbl_080761b4: .4byte 0x030013b2
|
||||
lbl_080761b8: .4byte 0x04000052
|
||||
lbl_080761bc: .4byte 0x03000c75
|
||||
lbl_080761c0: .4byte 0x03000bf8
|
||||
lbl_080761c4: .4byte 0x03000bfa
|
||||
lbl_080761c8: .4byte 0x03000c00
|
||||
lbl_080761cc: .4byte 0x03000c02
|
||||
lbl_080761d0: .4byte sub_080762e0
|
||||
|
||||
thumb_func_start sub_080761d4
|
||||
sub_080761d4: @ 0x080761d4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
ldr r0, lbl_08076280 @ =0x03005806
|
||||
movs r1, #0
|
||||
strb r1, [r0]
|
||||
ldr r0, lbl_08076284 @ =0x03005807
|
||||
strb r1, [r0]
|
||||
ldr r1, lbl_08076288 @ =0x08754bc4
|
||||
ldr r2, [r1]
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
ldr r2, [r1]
|
||||
movs r0, #0x80
|
||||
strb r0, [r2, #1]
|
||||
movs r2, #0
|
||||
adds r6, r1, #0
|
||||
ldr r0, lbl_0807628c @ =0x08415400
|
||||
mov r8, r0
|
||||
ldr r3, lbl_08076290 @ =0x0841540e
|
||||
mov sb, r3
|
||||
mov ip, r6
|
||||
ldr r3, lbl_08076294 @ =0x0840d048
|
||||
lbl_08076204:
|
||||
mov r4, ip
|
||||
ldr r1, [r4]
|
||||
lsls r0, r2, #4
|
||||
adds r1, r1, r0
|
||||
adds r1, #0x10
|
||||
adds r0, r3, #0
|
||||
ldm r0!, {r4, r5, r7}
|
||||
stm r1!, {r4, r5, r7}
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
ble lbl_08076204
|
||||
ldr r0, [r6]
|
||||
mov r5, r8
|
||||
ldrb r1, [r5]
|
||||
adds r0, #0x3a
|
||||
strb r1, [r0]
|
||||
ldr r1, [r6]
|
||||
mov r7, sb
|
||||
ldrh r0, [r7, #2]
|
||||
movs r5, #0
|
||||
strh r0, [r1, #0x30]
|
||||
ldrh r0, [r7]
|
||||
strh r0, [r1, #0x32]
|
||||
adds r1, #0x3b
|
||||
ldrb r3, [r1]
|
||||
movs r2, #0x3f
|
||||
adds r0, r2, #0
|
||||
ands r0, r3
|
||||
movs r4, #0x40
|
||||
orrs r0, r4
|
||||
strb r0, [r1]
|
||||
ldr r0, [r6]
|
||||
adds r0, #0x2a
|
||||
strb r5, [r0]
|
||||
ldr r1, [r6]
|
||||
ldrh r0, [r7, #6]
|
||||
strh r0, [r1, #0x20]
|
||||
ldrh r0, [r7, #4]
|
||||
strh r0, [r1, #0x22]
|
||||
adds r1, #0x2b
|
||||
ldrb r3, [r1]
|
||||
adds r0, r2, #0
|
||||
ands r0, r3
|
||||
orrs r0, r4
|
||||
strb r0, [r1]
|
||||
ldr r1, [r6]
|
||||
movs r0, #1
|
||||
strb r0, [r1, #0x1a]
|
||||
ldr r1, [r6]
|
||||
ldrb r0, [r1, #0x1b]
|
||||
ands r2, r0
|
||||
orrs r2, r4
|
||||
strb r2, [r1, #0x1b]
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
lbl_08076280: .4byte 0x03005806
|
||||
lbl_08076284: .4byte 0x03005807
|
||||
lbl_08076288: .4byte 0x08754bc4
|
||||
lbl_0807628c: .4byte 0x08415400
|
||||
lbl_08076290: .4byte 0x0841540e
|
||||
lbl_08076294: .4byte 0x0840d048
|
||||
|
||||
thumb_func_start sub_08076298
|
||||
sub_08076298: @ 0x08076298
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r0, lbl_080762d4 @ =0x08754bc4
|
||||
ldr r4, [r0]
|
||||
ldr r6, lbl_080762d8 @ =0x0841540e
|
||||
ldrb r2, [r4]
|
||||
lsrs r2, r2, #1
|
||||
lsls r2, r2, #2
|
||||
adds r3, r6, #2
|
||||
adds r3, r2, r3
|
||||
ldr r5, lbl_080762dc @ =0x08415416
|
||||
ldrb r0, [r4]
|
||||
lsls r0, r0, #2
|
||||
adds r1, r5, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
ldrh r3, [r3]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r4, #0x10]
|
||||
adds r2, r2, r6
|
||||
ldrb r0, [r4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r5
|
||||
ldrh r0, [r0]
|
||||
ldrh r2, [r2]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r4, #0x12]
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
lbl_080762d4: .4byte 0x08754bc4
|
||||
lbl_080762d8: .4byte 0x0841540e
|
||||
lbl_080762dc: .4byte 0x08415416
|
||||
|
||||
thumb_func_start sub_080762e0
|
||||
sub_080762e0: @ 0x080762e0
|
||||
ldr r1, lbl_08076334 @ =0x040000d4
|
||||
ldr r0, lbl_08076338 @ =0x03000e7c
|
||||
str r0, [r1]
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #0x13
|
||||
str r0, [r1, #4]
|
||||
ldr r0, lbl_0807633c @ =0x84000100
|
||||
str r0, [r1, #8]
|
||||
ldr r0, [r1, #8]
|
||||
subs r1, #0x80
|
||||
ldr r0, lbl_08076340 @ =0x030013ae
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
subs r1, #0x40
|
||||
ldr r0, lbl_08076344 @ =0x03000bf8
|
||||
ldrh r0, [r0]
|
||||
lsrs r0, r0, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldr r0, lbl_08076348 @ =0x03000bfa
|
||||
ldrh r0, [r0]
|
||||
lsrs r0, r0, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #6
|
||||
ldr r0, lbl_0807634c @ =0x03000c00
|
||||
ldrh r0, [r0]
|
||||
lsrs r0, r0, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #2
|
||||
ldr r0, lbl_08076350 @ =0x03000c02
|
||||
ldrh r0, [r0]
|
||||
lsrs r0, r0, #2
|
||||
strh r0, [r1]
|
||||
adds r1, #0x32
|
||||
ldr r0, lbl_08076354 @ =0x08754bc4
|
||||
ldr r2, [r0]
|
||||
ldrh r0, [r2, #0xa]
|
||||
strh r0, [r1]
|
||||
subs r1, #0x50
|
||||
ldrh r0, [r2, #8]
|
||||
strh r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
lbl_08076334: .4byte 0x040000d4
|
||||
lbl_08076338: .4byte 0x03000e7c
|
||||
lbl_0807633c: .4byte 0x84000100
|
||||
lbl_08076340: .4byte 0x030013ae
|
||||
lbl_08076344: .4byte 0x03000bf8
|
||||
lbl_08076348: .4byte 0x03000bfa
|
||||
lbl_0807634c: .4byte 0x03000c00
|
||||
lbl_08076350: .4byte 0x03000c02
|
||||
lbl_08076354: .4byte 0x08754bc4
|
||||
|
||||
thumb_func_start sub_08076358
|
||||
sub_08076358: @ 0x08076358
|
||||
sub sp, #4
|
||||
mov r1, sp
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
add sp, #4
|
||||
bx lr
|
||||
|
||||
thumb_func_start erase_sram_menu_process_oam
|
||||
erase_sram_menu_process_oam: @ 0x08076364
|
||||
push {lr}
|
||||
ldr r1, lbl_08076384 @ =0x03001382
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldr r0, lbl_08076388 @ =0x08754bc4
|
||||
ldr r1, [r0]
|
||||
adds r1, #0x10
|
||||
ldr r2, lbl_0807638c @ =0x08415428
|
||||
movs r0, #3
|
||||
bl process_menu_oam
|
||||
bl ResetFreeOAM
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
lbl_08076384: .4byte 0x03001382
|
||||
lbl_08076388: .4byte 0x08754bc4
|
||||
lbl_0807638c: .4byte 0x08415428
|
||||
|
@ -403,7 +403,7 @@ game_over_menu_init: @ 0x08077ba8
|
||||
ldr r0, lbl_08077d44 @ =0x03001382
|
||||
mov r1, r8
|
||||
strb r1, [r0]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
bl ResetFreeOAM
|
||||
ldr r1, lbl_08077d48 @ =0x03005806
|
||||
ldr r0, lbl_08077d4c @ =0x03005807
|
||||
@ -624,7 +624,7 @@ sub_08077dd8: @ 0x08077dd8
|
||||
strh r4, [r0]
|
||||
ldr r0, lbl_08077ec8 @ =0x03001382
|
||||
strb r5, [r0]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
bl ResetFreeOAM
|
||||
ldr r1, lbl_08077ecc @ =0x03005806
|
||||
ldr r0, lbl_08077ed0 @ =0x03005807
|
||||
@ -6271,7 +6271,7 @@ lbl_0807ab20:
|
||||
lbl_0807ab28: .4byte 0x087d80a0
|
||||
lbl_0807ab2c: .4byte 0x0845f440
|
||||
lbl_0807ab30:
|
||||
bl sub_080033dc
|
||||
bl unk_33dc
|
||||
ldr r2, lbl_0807ab50 @ =0x08754bc4
|
||||
ldr r1, [r2]
|
||||
movs r3, #0
|
||||
@ -9670,7 +9670,7 @@ file_select_menu_init: @ 0x0807c5e0
|
||||
strh r0, [r1]
|
||||
ldr r0, lbl_0807c7b0 @ =0x03001382
|
||||
strb r4, [r0]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
bl ResetFreeOAM
|
||||
ldr r1, lbl_0807c7b4 @ =0x03005806
|
||||
ldr r0, lbl_0807c7b8 @ =0x03005807
|
||||
@ -14880,7 +14880,7 @@ sub_0807eff0: @ 0x0807eff0
|
||||
strh r4, [r6]
|
||||
ldr r0, lbl_0807f0c8 @ =0x03001382
|
||||
strb r5, [r0]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
bl ResetFreeOAM
|
||||
ldr r1, lbl_0807f0cc @ =0x03005806
|
||||
ldr r0, lbl_0807f0d0 @ =0x03005807
|
||||
|
@ -1490,7 +1490,7 @@ tourian_escape_init: @ 0x08081d04
|
||||
ldr r0, lbl_08081e04 @ =0x8500018a
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
ldr r0, lbl_08081e08 @ =0x08480148
|
||||
ldr r1, lbl_08081e0c @ =0x06010000
|
||||
bl LZ77UncompVRAM
|
||||
@ -6932,7 +6932,7 @@ fusion_gallery_init: @ 0x08084870
|
||||
ldrsh r4, [r0, r1]
|
||||
cmp r4, #0
|
||||
bne lbl_080848ce
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
str r4, [sp, #4]
|
||||
ldr r1, lbl_080849e4 @ =0x040000d4
|
||||
add r2, sp, #4
|
||||
@ -8417,7 +8417,7 @@ credits_init: @ 0x08085464
|
||||
ldr r0, lbl_080855d0 @ =0x8500018a
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
ldr r0, lbl_080855d4 @ =0x085b2aa0
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #0x13
|
||||
@ -11540,7 +11540,7 @@ unlocked_options_init: @ 0x08086e78
|
||||
ldr r0, lbl_08086f88 @ =0x8500018a
|
||||
str r0, [r4, #8]
|
||||
ldr r0, [r4, #8]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
ldr r0, lbl_08086f8c @ =0x085c943c
|
||||
ldr r1, lbl_08086f90 @ =0x06008000
|
||||
bl LZ77UncompVRAM
|
||||
@ -12190,7 +12190,7 @@ gallery_init: @ 0x080873e4
|
||||
ldrsh r4, [r0, r1]
|
||||
cmp r4, #0
|
||||
bne lbl_08087440
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
str r4, [sp, #4]
|
||||
ldr r1, lbl_08087498 @ =0x040000d4
|
||||
add r2, sp, #4
|
||||
@ -13474,7 +13474,7 @@ chozodia_escape_init: @ 0x08087e4c
|
||||
ldr r0, lbl_08088044 @ =vblank_during_chozodia_escape
|
||||
bl CallbackSetVBlank
|
||||
strh r6, [r4]
|
||||
bl ClearGFXRAM
|
||||
bl ClearGfxRam
|
||||
ldr r0, lbl_08088048 @ =0x083ab6c0
|
||||
ldr r1, lbl_0808804c @ =0x06010000
|
||||
bl LZ77UncompVRAM
|
||||
|
22
database.txt
22
database.txt
@ -793,9 +793,25 @@ menus/TitleScreen/Sparkles.gfx.lz;256;0x4481fc;4
|
||||
menus/TitleScreen/SpaceBackground.gfx.lz;3203;0x4485fc;4
|
||||
menus/TitleScreen/SpaceBackgroundDecoration.gfx.lz;797;0x44b808;4
|
||||
menus/TitleScreen/SpaceAndGroundBackground.gfx.lz;1920;0x44c47c;4
|
||||
|
||||
menus/TitleScreen/Title.tt;199;0x44e27c;4
|
||||
menus/TitleScreen/SpaceBackground.tt;702;0x44e598;4
|
||||
|
||||
# Erase SRAM
|
||||
|
||||
menus/EraseSram/Objects.pal;112;0x411528;2
|
||||
menus/EraseSram/Background.pal;239;0x411608;2
|
||||
|
||||
menus/EraseSram/Objects.gfx.lz;477;0x411b64;4
|
||||
menus/EraseSram/FirstBox.gfx.lz;118;0x4122d8;4
|
||||
menus/EraseSram/ConfirmJapanse.gfx.lz;245;0x4124b0;4
|
||||
menus/EraseSram/ConfirmEnglish.gfx.lz;1027;0x412884;4
|
||||
menus/EraseSram/QuestionJapanese.gfx.lz;245;0x413890;4
|
||||
menus/EraseSram/QuestionEnglish.gfx.lz;1006;0x413c64;4
|
||||
|
||||
menus/EraseSram/Box.tt;137;0x414c1c;4
|
||||
menus/EraseSram/Background.tt;368;0x414e40;4
|
||||
|
||||
# Blobs
|
||||
|
||||
Blob_8cad0_8cee2.bin;1042;0x8cad0;1
|
||||
@ -808,12 +824,14 @@ Blob_34099c_345868.bin;20172;0x34099c;1
|
||||
Blob_345d00_360130.bin;107568;0x345d00;1
|
||||
Blob_3602e8_36bdac.bin;47812;0x3602e8;1
|
||||
Blob_375cc4_386f60.bin;70300;0x375cc4;1
|
||||
Blob_3f0390_446d68.bin;354776;0x3f0390;1
|
||||
Blob_3f0390_411528.bin;135576;0x3f0390;1
|
||||
Blob_415460_446d68.bin;203016;0x415460;1
|
||||
Blob_44f11c_45f45c.bin;66368;0x44f11c;1
|
||||
Blob_479400_754bb4.bin;2996148;0x479400;1
|
||||
Blob_754bd0_75e6a8.bin;39640;0x754bd0;1
|
||||
Blob_75fae4_75fd88.bin;676;0x75fae4;1
|
||||
Blob_75fdbc_75fde0.bin;36;0x75fdbc;1
|
||||
Blob_75fdfc_75fe5c.bin;96;0x75fdfc;1
|
||||
Blob_760090_760aa0.bin;2576;0x760090;1
|
||||
Blob_760090_760420.bin;912;0x760090;1
|
||||
Blob_760458_760aa0.bin;1608;0x760458;1
|
||||
Blob_760aef_7f7734.bin;617541;0x760aef;1
|
||||
|
16
include/constants/menus/erase_sram.h
Normal file
16
include/constants/menus/erase_sram.h
Normal file
@ -0,0 +1,16 @@
|
||||
#define ERASE_SRAM_OPTION_CHANGED_FLAG 0x80
|
||||
#define ERASE_SRAM_OPTION_QUESTION_NO 0
|
||||
#define ERASE_SRAM_OPTION_QUESTION_YES 1
|
||||
#define ERASE_SRAM_OPTION_CONFIRM_NO 2
|
||||
#define ERASE_SRAM_OPTION_CONFIRM_YES 3
|
||||
|
||||
#define ERASE_SRAM_INPUT_ACTION_NONE 0
|
||||
#define ERASE_SRAM_INPUT_ACTION_ERASING 1
|
||||
#define ERASE_SRAM_INPUT_ACTION_OPENING_SUB_WINDOW 2
|
||||
|
||||
#define ERASE_SRAM_OAM_ID_CURSOR_IDLE 1
|
||||
#define ERASE_SRAM_OAM_ID_CURSOR_SELECTING 2
|
||||
#define ERASE_SRAM_OAM_ID_QUESTION_WINDOW_NO_SELECTED 3
|
||||
#define ERASE_SRAM_OAM_ID_QUESTION_WINDOW_YES_SELECTED 4
|
||||
#define ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_NO_SELECTED 5
|
||||
#define ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_YES_SELECTED 6
|
30
include/data/menus/erase_sram_data.h
Normal file
30
include/data/menus/erase_sram_data.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef ERASE_SRAM_MENU_DATA_H
|
||||
#define ERASE_SRAM_MENU_DATA_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/cutscene.h"
|
||||
|
||||
extern const u16 sEraseSramMenuObjectsPAL[7 * 16];
|
||||
extern const u16 sEraseSramMenuBackgroundPAL[15 * 16 - 1];
|
||||
|
||||
// ...
|
||||
|
||||
extern const u32 sEraseSramMenuObjectsGFX[477];
|
||||
extern const u32 sEraseSramMenuFirstBoxGFX[118];
|
||||
extern const u32 sEraseSramMenuConfirmJapanseGFX[245];
|
||||
extern const u32 sEraseSramMenuConfirmEnglishGFX[1027];
|
||||
extern const u32 sEraseSramMenuQuestionJapaneseGFX[245];
|
||||
extern const u32 sEraseSramMenuQuestionEnglishGFX[1006];
|
||||
extern const u32 sEraseSramMenuBoxTileTable[137];
|
||||
extern const u32 sEraseSramMenuBackgroundTileTable[368];
|
||||
|
||||
extern const u8 sEraseSramQuestionWindowNoSelectedOamId;
|
||||
extern const u8 sEraseSramQuestionWindowYesSelectedOamId;
|
||||
extern const u8 sEraseSramConfirmWindowNoSelectedOamId;
|
||||
extern const u8 sEraseSramConfirmWindowYesSelectedOamId;
|
||||
extern const u16 sEraseSramMenuSoundsID[5];
|
||||
extern const u16 sEraseSramMenuCursorPosition[2][2];
|
||||
extern const u16 sEraseSramMenuCursorPositionOffset[4][2];
|
||||
extern const struct OamArray sEraseSramMenuOam[7];
|
||||
|
||||
#endif /* ERASE_SRAM_MENU_DATA_H */
|
8
include/data/menus/internal_erase_sram_data.h
Normal file
8
include/data/menus/internal_erase_sram_data.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef INTERNAL_ERASE_SRAM_MENU_DATA_H
|
||||
#define INTERNAL_ERASE_SRAM_MENU_DATA_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
extern const u32* const sEraseSramTextGfxPointers[7][2];
|
||||
|
||||
#endif /* INTERNAL_ERASE_SRAM_MENU_DATA_H */
|
@ -17,9 +17,8 @@ int tourian_escape_main(void);
|
||||
int cutscene_main(void);
|
||||
int gallery_main(void);
|
||||
int fusion_gallery_main(void);
|
||||
int erase_sram_main(void);
|
||||
|
||||
void sub_080033dc(void);
|
||||
void unk_33dc(void);
|
||||
void QueueSound(u16 id, u32 unk); /* TODO: unk type */
|
||||
void StopOrFadeSound(u16 id, u32 unk); /* TODO: unk type */
|
||||
void UpdateAudio();
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef INIT_HELPERS_H
|
||||
#define INIT_HELPERS_H
|
||||
|
||||
void ClearGFXRAM(void);
|
||||
void ClearGfxRam(void);
|
||||
void LoadInterruptCode(void);
|
||||
void ResetFreeOAM(void);
|
||||
|
||||
|
18
include/menus/erase_sram.h
Normal file
18
include/menus/erase_sram.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef ERASE_SRAM_MENU_H
|
||||
#define ERASE_SRAM_MENU_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/menus/erase_sram.h"
|
||||
|
||||
u32 EraseSramSubroutine(void);
|
||||
u32 EraseSramProcessInput(void);
|
||||
void EraseSramApplyInput(void);
|
||||
u32 EraseSramCheckForInput(void);
|
||||
void EraseSramInit(void);
|
||||
void EraseSramResetOAM(void);
|
||||
void EraseSramUpdateCursorPosition(void);
|
||||
void EraseSramVBlank(void);
|
||||
void EraseSramVBlank_Empty(void);
|
||||
void EraseSramProcessOAM(void);
|
||||
|
||||
#endif /* ERASE_SRAM_MENU_H */
|
21
include/structs/menus/erase_sram.h
Normal file
21
include/structs/menus/erase_sram.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef ERASE_SRAM_MENU_STRUCT_H
|
||||
#define ERASE_SRAM_MENU_STRUCT_H
|
||||
|
||||
#include "types.h"
|
||||
#include "structs/menu.h"
|
||||
|
||||
#define ERASE_SRAM_DATA sNonGameplayRamPointer->eraseSram
|
||||
|
||||
struct EraseSramData {
|
||||
u8 currentOption;
|
||||
u8 nextOption;
|
||||
u8 language;
|
||||
u16 timer;
|
||||
u8 bldyTarget;
|
||||
u16 dispcnt;
|
||||
u16 bldcnt;
|
||||
u8 padding_C;
|
||||
struct MenuOamData oam[3];
|
||||
};
|
||||
|
||||
#endif /* ERASE_SRAM_MENU_STRUCT_H */
|
@ -10,6 +10,7 @@
|
||||
#include "structs/ending_and_gallery.h"
|
||||
#include "structs/menus/pause_screen.h"
|
||||
#include "structs/menus/title_screen.h"
|
||||
#include "structs/menus/erase_sram.h"
|
||||
|
||||
|
||||
union NonGameplayRAM {
|
||||
@ -19,6 +20,7 @@ union NonGameplayRAM {
|
||||
struct EndingData ending;
|
||||
struct PauseScreenData pauseScreen;
|
||||
struct TitleScreenData titleScreen;
|
||||
struct EraseSramData eraseSram;
|
||||
u8 inGame[1576];
|
||||
};
|
||||
|
||||
|
11
linker.ld
11
linker.ld
@ -291,7 +291,7 @@ SECTIONS {
|
||||
src/init_helpers.o(.text);
|
||||
src/fixed_point.o(.text);
|
||||
src/callbacks.o(.text);
|
||||
src/sub_08000c04.o(.text);
|
||||
src/erase_sram_func.o(.text);
|
||||
asm/disasm_0x08000c48.o(.text);
|
||||
asm/disasm_0x08002a58.o(.text);
|
||||
asm/syscalls.o(.text);
|
||||
@ -404,6 +404,7 @@ SECTIONS {
|
||||
src/cutscenes/before_charlie.o(.text);
|
||||
src/cutscenes/statue_opening.o(.text);
|
||||
asm/disasm_0x08067080.o(.text);
|
||||
src/menus/erase_sram.o(.text);
|
||||
src/menus/title_screen.o(.text);
|
||||
asm/disasm_0x080778c4.o(.text);
|
||||
src/intro.o(.text);
|
||||
@ -525,7 +526,9 @@ SECTIONS {
|
||||
src/data/cutscenes/getting_fully_powered_suit_data.o(.rodata);
|
||||
src/data/cutscenes/before_charlie_data.o(.rodata);
|
||||
src/data/cutscenes/statue_opening_data.o(.rodata);
|
||||
/* 3f0390-446d68 */
|
||||
/* 3f0390-411528 */
|
||||
src/data/menus/erase_sram_data.o(.rodata);
|
||||
/* 415460-446d68 */
|
||||
src/data/menus/title_screen_data.o(.rodata);
|
||||
/* 44f11c-45f45c */
|
||||
src/data/intro_data.o(.rodata);
|
||||
@ -546,7 +549,9 @@ SECTIONS {
|
||||
src/data/cutscenes/internal_getting_fully_powered_suit_data.o(.rodata);
|
||||
src/data/cutscenes/internal_before_charlie_data.o(.rodata);
|
||||
src/data/cutscenes/internal_statue_opening_data.o(.rodata);
|
||||
/* 760090-760aa0 */
|
||||
/* 760090-760420 */
|
||||
src/data/menus/internal_erase_sram_data.o(.rodata)
|
||||
/* 760458-760aa0 */
|
||||
src/data/menus/internal_title_screen_data.o(.rodata)
|
||||
/* 760aef-7f7734 */
|
||||
} >rom
|
||||
|
@ -218,7 +218,7 @@ void agbmain(void)
|
||||
break;
|
||||
|
||||
case GM_ERASE_SRAM:
|
||||
if (erase_sram_main())
|
||||
if (EraseSramSubroutine())
|
||||
{
|
||||
if (gGameModeSub2 == 1)
|
||||
gResetGame = TRUE;
|
||||
|
@ -268,7 +268,7 @@ void CutsceneInit(void)
|
||||
if (gCutsceneToSkip != gCurrentCutscene)
|
||||
gCurrentCutscene = CUTSCENE_NONE;
|
||||
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
|
||||
gBG0HOFS_NonGameplay = gBG0VOFS_NonGameplay = 0x800;
|
||||
gBG1HOFS_NonGameplay = gBG1VOFS_NonGameplay = 0x800;
|
||||
|
@ -18,4 +18,4 @@ const struct CutsceneSubroutineData sStatueOpeningSubroutineData[3] = {
|
||||
}
|
||||
};
|
||||
|
||||
const u8 sTempArray_760090[0xa10] = INCBIN_U8("data/Blob_760090_760aa0.bin");
|
||||
const u8 sTempArray_760090[0x390] = INCBIN_U8("data/Blob_760090_760420.bin");
|
||||
|
@ -77,4 +77,4 @@ const u32 sStatueOpeningRoomGFX[2357] = INCBIN_U32("data/cutscenes/StatueOpening
|
||||
const u32 sStatueOpeningRoomTileTable[318] = INCBIN_U32("data/cutscenes/StatueOpening/Room.tt");
|
||||
const u32 sStatueOpening_3effc8[242] = INCBIN_U32("data/cutscenes/StatueOpening/3effc8.tt");
|
||||
|
||||
const u8 sTempArray_3f0390[0x569d8] = INCBIN_U8("data/Blob_3f0390_446d68.bin");
|
||||
const u8 sTempArray_3f0390[0x21198] = INCBIN_U8("data/Blob_3f0390_411528.bin");
|
||||
|
385
src/data/menus/erase_sram_data.c
Normal file
385
src/data/menus/erase_sram_data.c
Normal file
@ -0,0 +1,385 @@
|
||||
#include "data/menus/erase_sram_data.h"
|
||||
#include "macros.h"
|
||||
#include "constants/menus/erase_sram.h"
|
||||
|
||||
const u16 sEraseSramMenuObjectsPAL[7 * 16] = INCBIN_U16("data/menus/EraseSram/Objects.pal");
|
||||
const u16 sEraseSramMenuBackgroundPAL[15 * 16 - 1] = INCBIN_U16("data/menus/EraseSram/Background.pal");
|
||||
|
||||
static const u16 sEraseSramOAM_ConfirmWindowNoSelected_Frame0[52] = {
|
||||
0x11,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x1b8, 0x2098,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x1d8, 0x209c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x10, 0x50d8,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x30, 0x50dc,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x1a0, 0x2080,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x1e0, 0x2088,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x20, 0x2090,
|
||||
0xe0, OBJ_SIZE_64x64 | 0x190, 0x3100,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x20, OBJ_SIZE_64x32 | 0x190, 0x3200,
|
||||
0xe0, OBJ_SIZE_64x64 | 0x30, 0x3104,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x20, OBJ_SIZE_64x32 | 0x30, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x1d0, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x1d0, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x1f0, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x1f0, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x10, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x10, 0x3204
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_ConfirmWindowYesSelected_Frame0[52] = {
|
||||
0x11,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x1b8, 0x5098,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x1d8, 0x509c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x10, 0x20d8,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x16 | 0x30, 0x20dc,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x1a0, 0x2080,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x1e0, 0x2088,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x20, 0x2090,
|
||||
0xe0, OBJ_SIZE_64x64 | 0x190, 0x3100,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x20, OBJ_SIZE_64x32 | 0x190, 0x3200,
|
||||
0xe0, OBJ_SIZE_64x64 | 0x30, 0x3104,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x20, OBJ_SIZE_64x32 | 0x30, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x1d0, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x1d0, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x1f0, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x1f0, 0x3204,
|
||||
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_32x64 | 0x10, 0x3104,
|
||||
0x20, OBJ_SIZE_32x32 | 0x10, 0x3204
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_CursorIdle_Frame0[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x8, 0x410d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_CursorIdle_Frame1[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x9, 0x410d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_CursorIdle_Frame2[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0xa, 0x410d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_CursorSelecting_Frame1[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x8, 0x410e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118d6[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x9, 0x410e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118de[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0xa, 0x410e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118e6[4] = {
|
||||
0x1,
|
||||
0xf7, 0xc, 0x415d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118ee[4] = {
|
||||
0x1,
|
||||
0xf7, 0xd, 0x415e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118f6[4] = {
|
||||
0x1,
|
||||
0xf7, 0xa, 0x415f
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4118fe[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_QuestionWindowNoSelected_Frame0[13] = {
|
||||
0x4,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1b8, 0x2018,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1d8, 0x201c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x10, 0x5058,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x30, 0x505c
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_QuestionWindowYesSelected_Frame0[13] = {
|
||||
0x4,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1b8, 0x5018,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x1d8, 0x501c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x10, 0x2058,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_32x16 | 0x30, 0x205c
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_41193a[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4191,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4193,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xa, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_41194e[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4194,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4196,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xb, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411962[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4197,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4199,
|
||||
0xf7, 0xc, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411976[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x419a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x419c,
|
||||
0xf7, 0xb, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_41198a[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xa, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_41199e[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xb, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4119b2[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
0xf7, 0xc, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4119c6[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
0xf7, 0xb, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4119da[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xa, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_4119ee[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xb, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a02[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c,
|
||||
0xf7, 0xc, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a16[10] = {
|
||||
0x3,
|
||||
0xf7, 0xb, 0x411e,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a2a[10] = {
|
||||
0x3,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xa, 0x411d,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a3e[10] = {
|
||||
0x3,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xb, 0x411d,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4157,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4159
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a52[10] = {
|
||||
0x3,
|
||||
0xf7, 0xc, 0x411e,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4117,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4119
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a66[10] = {
|
||||
0x3,
|
||||
0xf7, 0xb, 0x411e,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4117,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4119
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a7a[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4117,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4119,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xa, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411a8e[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4117,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4119,
|
||||
OBJ_SHAPE_VERTICAL | 0xef, 0xb, 0x411d
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411aa2[10] = {
|
||||
0x3,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x4157,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x4159,
|
||||
0xf7, 0xc, 0x411e
|
||||
};
|
||||
|
||||
static const u16 sEraseSramOAM_UnusedFrame_411ab6[10] = {
|
||||
0x3,
|
||||
0xf7, 0xb, 0x411e,
|
||||
0xf0, OBJ_SIZE_16x16 | 0x1f4, 0x411a,
|
||||
OBJ_SHAPE_VERTICAL | 0xf0, 0x4, 0x411c
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_CursorIdle[4] = {
|
||||
sEraseSramOAM_CursorIdle_Frame0,
|
||||
6,
|
||||
sEraseSramOAM_CursorIdle_Frame1,
|
||||
6,
|
||||
sEraseSramOAM_CursorIdle_Frame2,
|
||||
6,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_CursorSelecting[7] = {
|
||||
sEraseSramOAM_CursorIdle_Frame0,
|
||||
4,
|
||||
sEraseSramOAM_CursorSelecting_Frame1,
|
||||
4,
|
||||
sEraseSramOAM_CursorIdle_Frame0,
|
||||
4,
|
||||
sEraseSramOAM_CursorSelecting_Frame1,
|
||||
4,
|
||||
sEraseSramOAM_CursorIdle_Frame0,
|
||||
4,
|
||||
sEraseSramOAM_CursorSelecting_Frame1,
|
||||
4,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_QuestionWindowNoSelected[2] = {
|
||||
sEraseSramOAM_QuestionWindowNoSelected_Frame0,
|
||||
UCHAR_MAX,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_QuestionWindowYesSelected[2] = {
|
||||
sEraseSramOAM_QuestionWindowYesSelected_Frame0,
|
||||
UCHAR_MAX,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_ConfirmWindowNoSelected[2] = {
|
||||
sEraseSramOAM_ConfirmWindowNoSelected_Frame0,
|
||||
UCHAR_MAX,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static const struct FrameData sEraseSramOAM_ConfirmWindowYesSelected[2] = {
|
||||
sEraseSramOAM_ConfirmWindowYesSelected_Frame0,
|
||||
UCHAR_MAX,
|
||||
NULL,
|
||||
0
|
||||
};
|
||||
|
||||
const u32 sEraseSramMenuObjectsGFX[477] = INCBIN_U32("data/menus/EraseSram/Objects.gfx.lz");
|
||||
const u32 sEraseSramMenuFirstBoxGFX[118] = INCBIN_U32("data/menus/EraseSram/FirstBox.gfx.lz");
|
||||
const u32 sEraseSramMenuConfirmJapanseGFX[245] = INCBIN_U32("data/menus/EraseSram/ConfirmJapanse.gfx.lz");
|
||||
const u32 sEraseSramMenuConfirmEnglishGFX[1027] = INCBIN_U32("data/menus/EraseSram/ConfirmEnglish.gfx.lz");
|
||||
const u32 sEraseSramMenuQuestionJapaneseGFX[245] = INCBIN_U32("data/menus/EraseSram/QuestionJapanese.gfx.lz");
|
||||
const u32 sEraseSramMenuQuestionEnglishGFX[1006] = INCBIN_U32("data/menus/EraseSram/QuestionEnglish.gfx.lz");
|
||||
const u32 sEraseSramMenuBoxTileTable[137] = INCBIN_U32("data/menus/EraseSram/Box.tt");
|
||||
const u32 sEraseSramMenuBackgroundTileTable[368] = INCBIN_U32("data/menus/EraseSram/Background.tt");
|
||||
|
||||
const u8 sEraseSramQuestionWindowNoSelectedOamId = ERASE_SRAM_OAM_ID_QUESTION_WINDOW_NO_SELECTED;
|
||||
const u8 sEraseSramQuestionWindowYesSelectedOamId = ERASE_SRAM_OAM_ID_QUESTION_WINDOW_YES_SELECTED;
|
||||
const u8 sEraseSramConfirmWindowNoSelectedOamId = ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_NO_SELECTED;
|
||||
const u8 sEraseSramConfirmWindowYesSelectedOamId = ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_YES_SELECTED;
|
||||
|
||||
const u16 sEraseSramMenuSoundsID[5] = {
|
||||
0, 0x1FC, 0x208, 0x209, 0x1FA
|
||||
};
|
||||
|
||||
const u16 sEraseSramMenuCursorPosition[2][2] = {
|
||||
[0] = {
|
||||
BLOCK_SIZE * 8, BLOCK_SIZE * 5 + HALF_BLOCK_SIZE
|
||||
},
|
||||
[1] = {
|
||||
BLOCK_SIZE * 8 - 8, BLOCK_SIZE * 5 + HALF_BLOCK_SIZE + 8
|
||||
}
|
||||
};
|
||||
|
||||
const u16 sEraseSramMenuCursorPositionOffset[4][2] = {
|
||||
[ERASE_SRAM_OPTION_QUESTION_NO] = {
|
||||
-(BLOCK_SIZE * 5 + QUARTER_BLOCK_SIZE), -8
|
||||
},
|
||||
[ERASE_SRAM_OPTION_QUESTION_YES] = {
|
||||
QUARTER_BLOCK_SIZE, -8
|
||||
},
|
||||
[ERASE_SRAM_OPTION_CONFIRM_NO] = {
|
||||
-(BLOCK_SIZE * 5 + QUARTER_BLOCK_SIZE), BLOCK_SIZE * 2 + 0x18
|
||||
},
|
||||
[ERASE_SRAM_OPTION_CONFIRM_YES] = {
|
||||
QUARTER_BLOCK_SIZE, BLOCK_SIZE * 2 + 0x18
|
||||
}
|
||||
};
|
||||
|
||||
const struct OamArray sEraseSramMenuOam[7] = {
|
||||
[0] = {
|
||||
.pOam = sEraseSramOAM_CursorIdle,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_NONE
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_CURSOR_IDLE] = {
|
||||
.pOam = sEraseSramOAM_CursorIdle,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_CHANGE_FRAME
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_CURSOR_SELECTING] = {
|
||||
.pOam = sEraseSramOAM_CursorSelecting,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_CHANGE_FRAME
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_QUESTION_WINDOW_NO_SELECTED] = {
|
||||
.pOam = sEraseSramOAM_QuestionWindowNoSelected,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_RESET_FRAME
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_QUESTION_WINDOW_YES_SELECTED] = {
|
||||
.pOam = sEraseSramOAM_QuestionWindowYesSelected,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_RESET_FRAME
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_NO_SELECTED] = {
|
||||
.pOam = sEraseSramOAM_ConfirmWindowNoSelected,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_RESET_FRAME
|
||||
},
|
||||
[ERASE_SRAM_OAM_ID_CONFIRM_WINDOW_YES_SELECTED] = {
|
||||
.pOam = sEraseSramOAM_ConfirmWindowYesSelected,
|
||||
.preAction = OAM_ARRAY_PRE_ACTION_RESET_FRAME
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sTempArray_415460[0x31908] = INCBIN_U8("data/Blob_415460_446d68.bin");
|
37
src/data/menus/internal_erase_sram_data.c
Normal file
37
src/data/menus/internal_erase_sram_data.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include "data/menus/internal_erase_sram_data.h"
|
||||
#include "macros.h"
|
||||
#include "data/menus/erase_sram_data.h"
|
||||
#include "constants/game_state.h"
|
||||
|
||||
const u32* const sEraseSramTextGfxPointers[7][2] = {
|
||||
[LANGUAGE_JAPANESE] = {
|
||||
sEraseSramMenuQuestionJapaneseGFX,
|
||||
sEraseSramMenuConfirmJapanseGFX
|
||||
},
|
||||
[LANGUAGE_HIRAGANA] = {
|
||||
sEraseSramMenuQuestionJapaneseGFX,
|
||||
sEraseSramMenuConfirmJapanseGFX
|
||||
},
|
||||
[LANGUAGE_ENGLISH] = {
|
||||
sEraseSramMenuQuestionEnglishGFX,
|
||||
sEraseSramMenuConfirmEnglishGFX
|
||||
},
|
||||
[LANGUAGE_GERMAN] = {
|
||||
sEraseSramMenuQuestionEnglishGFX,
|
||||
sEraseSramMenuConfirmEnglishGFX
|
||||
},
|
||||
[LANGUAGE_FRENCH] = {
|
||||
sEraseSramMenuQuestionEnglishGFX,
|
||||
sEraseSramMenuConfirmEnglishGFX
|
||||
},
|
||||
[LANGUAGE_ITALIAN] = {
|
||||
sEraseSramMenuQuestionEnglishGFX,
|
||||
sEraseSramMenuConfirmEnglishGFX
|
||||
},
|
||||
[LANGUAGE_SPANISH] = {
|
||||
sEraseSramMenuQuestionEnglishGFX,
|
||||
sEraseSramMenuConfirmEnglishGFX
|
||||
},
|
||||
};
|
||||
|
||||
const u8 sTempArray_760458[0x648] = INCBIN_U8("data/Blob_760458_760aa0.bin");
|
@ -5,7 +5,7 @@
|
||||
#include "sram/sram.h"
|
||||
#include "types.h"
|
||||
|
||||
void sub_08000c04(void)
|
||||
void EraseSRAM(void)
|
||||
{
|
||||
BitFill(3, 0xffff, &unk_02038000, SRAM_SIZE, 16);
|
||||
if (gSRAMCorruptFlag == 0) {
|
@ -369,7 +369,7 @@ void InitAndLoadGenerics(void)
|
||||
|
||||
if (gGameModeSub3 == 0 || gTourianEscapeCutsceneStage != 0)
|
||||
{
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
HUDGenericLoadCommonSpriteGFX();
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ void InitializeGame(void)
|
||||
dma_fill32(3, 0, EWRAM_BASE, 0x40000);
|
||||
dma_fill32(3, 0, IWRAM_BASE, 0x7e00);
|
||||
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
LoadInterruptCode();
|
||||
CallbackSetVBlank(SoftresetVBlankCallback);
|
||||
read_sram();
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "memory.h"
|
||||
#include "types.h"
|
||||
|
||||
void ClearGFXRAM(void)
|
||||
void ClearGfxRam(void)
|
||||
{
|
||||
BitFill(3, 0x00, VRAM_BASE, VRAM_SIZE, 0x10);
|
||||
BitFill(3, 0xff, OAM_BASE, OAM_SIZE, 0x20);
|
||||
|
@ -75,7 +75,7 @@ void IntroInit(void)
|
||||
INTRO_DATA.charDrawerX = 0x38;
|
||||
INTRO_DATA.charDrawerY = 0x60;
|
||||
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
|
||||
LZ77UncompVRAM(sIntroTextAndShipFlyingInGFX, VRAM_BASE + 0x10000);
|
||||
LZ77UncompVRAM(sIntroSpaceBackgroundGFX, VRAM_BASE);
|
||||
|
456
src/menus/erase_sram.c
Normal file
456
src/menus/erase_sram.c
Normal file
@ -0,0 +1,456 @@
|
||||
#include "menus/erase_sram.h"
|
||||
#include "macros.h"
|
||||
#include "callbacks.h"
|
||||
#include "data/shortcut_pointers.h"
|
||||
#include "data/menus/erase_sram_data.h"
|
||||
#include "data/menus/internal_erase_sram_data.h"
|
||||
#include "data/menus/title_screen_data.h"
|
||||
|
||||
#include "constants/audio.h"
|
||||
#include "constants/game_state.h"
|
||||
#include "constants/menus/erase_sram.h"
|
||||
|
||||
#include "structs/display.h"
|
||||
#include "structs/game_state.h"
|
||||
#include "structs/menus/erase_sram.h"
|
||||
|
||||
/**
|
||||
* @brief 75c30 | 14c | Subroutine for the erase sram menu
|
||||
*
|
||||
* @return u32 bool, leaving
|
||||
*/
|
||||
u32 EraseSramSubroutine(void)
|
||||
{
|
||||
u32 leaving;
|
||||
|
||||
leaving = FALSE;
|
||||
|
||||
ERASE_SRAM_DATA.timer++;
|
||||
switch (gGameModeSub1)
|
||||
{
|
||||
case 0:
|
||||
EraseSramInit();
|
||||
gGameModeSub1++;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (gWrittenToBLDY_NonGameplay != 0)
|
||||
{
|
||||
gWrittenToBLDY_NonGameplay--;
|
||||
break;
|
||||
}
|
||||
|
||||
ERASE_SRAM_DATA.bldcnt = BLDCNT_BG0_FIRST_TARGET_PIXEL | BLDCNT_BG1_FIRST_TARGET_PIXEL | BLDCNT_BG2_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG3_FIRST_TARGET_PIXEL | BLDCNT_BACKDROP_FIRST_TARGET_PIXEL | BLDCNT_ALPHA_BLENDING_EFFECT |
|
||||
BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
ERASE_SRAM_DATA.bldyTarget = gWrittenToBLDY_NonGameplay;
|
||||
|
||||
gGameModeSub1++;
|
||||
ERASE_SRAM_DATA.timer = 0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
gGameModeSub2 = EraseSramProcessInput();
|
||||
if (gGameModeSub2 == 0)
|
||||
break;
|
||||
|
||||
ERASE_SRAM_DATA.timer = 0;
|
||||
if (gGameModeSub2 == ERASE_SRAM_INPUT_ACTION_ERASING)
|
||||
gGameModeSub1 = 5;
|
||||
else
|
||||
gGameModeSub1 = 3;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (ERASE_SRAM_DATA.timer <= 40)
|
||||
break;
|
||||
|
||||
ERASE_SRAM_DATA.bldcnt = BLDCNT_BG0_FIRST_TARGET_PIXEL | BLDCNT_BG1_FIRST_TARGET_PIXEL | BLDCNT_BG2_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG3_FIRST_TARGET_PIXEL | BLDCNT_OBJ_FIRST_TARGET_PIXEL | BLDCNT_BACKDROP_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
ERASE_SRAM_DATA.timer = 0;
|
||||
gGameModeSub1++;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (gWrittenToBLDY_NonGameplay < 16)
|
||||
{
|
||||
gWrittenToBLDY_NonGameplay++;
|
||||
break;
|
||||
}
|
||||
|
||||
ERASE_SRAM_DATA.dispcnt &= ~(DCNT_BG0 | DCNT_BG1 | DCNT_BG2 | DCNT_BG3 | DCNT_OBJ);
|
||||
leaving = TRUE;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (ERASE_SRAM_DATA.timer <= 40)
|
||||
break;
|
||||
|
||||
ERASE_SRAM_DATA.bldcnt = BLDCNT_BG0_FIRST_TARGET_PIXEL | BLDCNT_BG1_FIRST_TARGET_PIXEL | BLDCNT_BG2_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG3_FIRST_TARGET_PIXEL | BLDCNT_OBJ_FIRST_TARGET_PIXEL | BLDCNT_BACKDROP_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
ERASE_SRAM_DATA.timer = 0;
|
||||
gGameModeSub1++;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (gWrittenToBLDY_NonGameplay < 16)
|
||||
{
|
||||
gWrittenToBLDY_NonGameplay++;
|
||||
break;
|
||||
}
|
||||
|
||||
gGameModeSub1++;
|
||||
ERASE_SRAM_DATA.dispcnt = DCNT_BLANK;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
unk_33dc();
|
||||
EraseSRAM();
|
||||
leaving = TRUE;
|
||||
}
|
||||
|
||||
if (!leaving)
|
||||
EraseSramProcessOAM();
|
||||
|
||||
return leaving;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 75d7c | 54 | Processes the input for the erase sram menu
|
||||
*
|
||||
* @return u32 action
|
||||
*/
|
||||
u32 EraseSramProcessInput(void)
|
||||
{
|
||||
u32 result;
|
||||
|
||||
result = ERASE_SRAM_INPUT_ACTION_NONE;
|
||||
|
||||
if (ERASE_SRAM_DATA.nextOption & ERASE_SRAM_OPTION_CHANGED_FLAG)
|
||||
EraseSramApplyInput();
|
||||
else
|
||||
result = EraseSramCheckForInput();
|
||||
|
||||
// Update BLDY based on target
|
||||
if (ERASE_SRAM_DATA.bldyTarget != gWrittenToBLDY_NonGameplay)
|
||||
{
|
||||
if (ERASE_SRAM_DATA.bldyTarget > gWrittenToBLDY_NonGameplay)
|
||||
gWrittenToBLDY_NonGameplay++;
|
||||
else
|
||||
gWrittenToBLDY_NonGameplay--;
|
||||
}
|
||||
|
||||
EraseSramUpdateCursorPosition();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 75dd0 | ac | Applies the input
|
||||
*
|
||||
*/
|
||||
void EraseSramApplyInput(void)
|
||||
{
|
||||
if (ERASE_SRAM_DATA.oam[0].oamID == ERASE_SRAM_OAM_ID_CURSOR_SELECTING)
|
||||
return;
|
||||
|
||||
ERASE_SRAM_DATA.nextOption &= ~ERASE_SRAM_OPTION_CHANGED_FLAG;
|
||||
ERASE_SRAM_DATA.currentOption = ERASE_SRAM_DATA.nextOption;
|
||||
|
||||
switch (ERASE_SRAM_DATA.nextOption)
|
||||
{
|
||||
case ERASE_SRAM_OPTION_QUESTION_NO:
|
||||
ERASE_SRAM_DATA.oam[2].oamID = sEraseSramQuestionWindowNoSelectedOamId;
|
||||
ERASE_SRAM_DATA.oam[1].oamID = 0;
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_QUESTION_YES:
|
||||
ERASE_SRAM_DATA.oam[2].oamID = sEraseSramQuestionWindowYesSelectedOamId;
|
||||
ERASE_SRAM_DATA.oam[1].oamID = 0;
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_CONFIRM_NO:
|
||||
ERASE_SRAM_DATA.oam[1].oamID = sEraseSramConfirmWindowNoSelectedOamId;
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_CONFIRM_YES:
|
||||
ERASE_SRAM_DATA.oam[1].oamID = sEraseSramConfirmWindowYesSelectedOamId;
|
||||
break;
|
||||
}
|
||||
|
||||
ERASE_SRAM_DATA.oam[1].idChanged = TRUE << 1;
|
||||
ERASE_SRAM_DATA.oam[2].idChanged = TRUE << 1;
|
||||
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_IDLE;
|
||||
ERASE_SRAM_DATA.oam[0].idChanged = TRUE << 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 75e7c | 10c | Checks for input
|
||||
*
|
||||
* @return u32 action
|
||||
*/
|
||||
u32 EraseSramCheckForInput(void)
|
||||
{
|
||||
u32 sound;
|
||||
u32 result;
|
||||
u32 exiting;
|
||||
|
||||
result = ERASE_SRAM_INPUT_ACTION_NONE;
|
||||
sound = 0;
|
||||
exiting = FALSE;
|
||||
|
||||
switch (ERASE_SRAM_DATA.currentOption)
|
||||
{
|
||||
case ERASE_SRAM_OPTION_QUESTION_NO:
|
||||
if (gChangedInput & KEY_RIGHT)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_YES;
|
||||
sound = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gChangedInput & KEY_A)
|
||||
{
|
||||
result = ERASE_SRAM_INPUT_ACTION_OPENING_SUB_WINDOW;
|
||||
exiting = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_QUESTION_YES:
|
||||
if (gChangedInput & KEY_LEFT)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
sound = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gChangedInput & KEY_A)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_CONFIRM_NO;
|
||||
sound = 2;
|
||||
ERASE_SRAM_DATA.bldyTarget = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_CONFIRM_NO:
|
||||
if (gChangedInput & KEY_RIGHT)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_CONFIRM_YES;
|
||||
sound = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gChangedInput & (KEY_A | KEY_B))
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
ERASE_SRAM_DATA.bldyTarget = 0;
|
||||
sound = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case ERASE_SRAM_OPTION_CONFIRM_YES:
|
||||
if (gChangedInput & KEY_LEFT)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_CONFIRM_NO;
|
||||
sound = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gChangedInput & KEY_A)
|
||||
{
|
||||
result = ERASE_SRAM_INPUT_ACTION_ERASING;
|
||||
exiting = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gChangedInput & KEY_B)
|
||||
{
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
sound = 3;
|
||||
ERASE_SRAM_DATA.bldyTarget = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (exiting)
|
||||
{
|
||||
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_SELECTING;
|
||||
ERASE_SRAM_DATA.oam[0].idChanged = TRUE << 1;
|
||||
sound = 1;
|
||||
}
|
||||
|
||||
if (sEraseSramMenuSoundsID[sound])
|
||||
SoundPlay(sEraseSramMenuSoundsID[sound]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 75f88 | 24c | Initializes the erase sram menu
|
||||
*
|
||||
*/
|
||||
void EraseSramInit(void)
|
||||
{
|
||||
u32 zero;
|
||||
|
||||
write16(REG_IME, FALSE);
|
||||
write16(REG_DISPSTAT, read16(REG_DISPSTAT) & ~DSTAT_IF_HBLANK);
|
||||
write16(REG_IE, read16(REG_IE) & ~IF_HBLANK);
|
||||
write16(REG_IF, IF_HBLANK);
|
||||
write16(REG_IME, TRUE);
|
||||
|
||||
CallbackSetVBlank(EraseSramVBlank_Empty);
|
||||
|
||||
write16(REG_BLDCNT, BLDCNT_BG0_FIRST_TARGET_PIXEL | BLDCNT_BG1_FIRST_TARGET_PIXEL | BLDCNT_BG2_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BG3_FIRST_TARGET_PIXEL | BLDCNT_OBJ_FIRST_TARGET_PIXEL | BLDCNT_BACKDROP_FIRST_TARGET_PIXEL |
|
||||
BLDCNT_BRIGHTNESS_INCREASE_EFFECT);
|
||||
|
||||
write16(REG_BLDY, gWrittenToBLDY_NonGameplay = 16);
|
||||
|
||||
zero = 0;
|
||||
dma_set(3, &zero, &gNonGameplayRAM, (DMA_ENABLE | DMA_32BIT | DMA_SRC_FIXED) << 16 | sizeof(gNonGameplayRAM) / 4);
|
||||
|
||||
ClearGfxRam();
|
||||
gNextOamSlot = 0;
|
||||
ResetFreeOAM();
|
||||
|
||||
ERASE_SRAM_DATA.language = gLanguage;
|
||||
if ((u8)(ERASE_SRAM_DATA.language - 2) > LANGUAGE_SPANISH - 2)
|
||||
ERASE_SRAM_DATA.language = LANGUAGE_ENGLISH;
|
||||
|
||||
while ((u16)(read16(REG_VCOUNT) - 0x15) < 0x8C);
|
||||
|
||||
dma_set(3, sEraseSramMenuBackgroundPAL, PALRAM_BASE, DMA_ENABLE << 16 | 0xD0);
|
||||
dma_set(3, sEraseSramMenuObjectsPAL, PALRAM_BASE + 0x200, DMA_ENABLE << 16 | sizeof(sEraseSramMenuObjectsPAL) / 2);
|
||||
write16(PALRAM_BASE, 0);
|
||||
|
||||
LZ77UncompVRAM(sEraseSramMenuFirstBoxGFX, VRAM_BASE + 0x1000);
|
||||
LZ77UncompVRAM(sEraseSramMenuObjectsGFX, VRAM_BASE + 0x12000);
|
||||
LZ77UncompVRAM(sTitleScreenSpaceBackgroundDecorationGFX, VRAM_BASE + 0x1800);
|
||||
LZ77UncompVRAM(sTitleScreenSpaceAndGroundBackgroundGFX, VRAM_BASE + 0x3400);
|
||||
|
||||
LZ77UncompVRAM(sEraseSramTextGfxPointers[ERASE_SRAM_DATA.language][0], VRAM_BASE);
|
||||
LZ77UncompVRAM(sEraseSramTextGfxPointers[ERASE_SRAM_DATA.language][1], VRAM_BASE + 0x11000);
|
||||
LZ77UncompVRAM(sEraseSramTextGfxPointers[ERASE_SRAM_DATA.language][0], VRAM_BASE + 0x10000);
|
||||
|
||||
LZ77UncompVRAM(sEraseSramMenuBoxTileTable, VRAM_BASE + 0xD000);
|
||||
LZ77UncompVRAM(sEraseSramMenuBackgroundTileTable, VRAM_BASE + 0xF000);
|
||||
|
||||
write16(REG_BG0CNT, 0);
|
||||
write16(REG_BG2CNT, 0);
|
||||
|
||||
write16(REG_BG1CNT, 0x1A01);
|
||||
write16(REG_BG3CNT, 0x1E03);
|
||||
|
||||
gWrittenToBLDALPHA_H = 0;
|
||||
write16(REG_BLDALPHA, 0);
|
||||
|
||||
gGameModeSub3 = 0;
|
||||
|
||||
gBG1HOFS_NonGameplay = 0;
|
||||
gBG1VOFS_NonGameplay = 0;
|
||||
gBG3HOFS_NonGameplay = 0;
|
||||
gBG3VOFS_NonGameplay = 0;
|
||||
|
||||
EraseSramResetOAM();
|
||||
EraseSramUpdateCursorPosition();
|
||||
EraseSramProcessOAM();
|
||||
EraseSramVBlank();
|
||||
|
||||
ERASE_SRAM_DATA.bldcnt = read16(REG_BLDCNT);
|
||||
ERASE_SRAM_DATA.dispcnt = DCNT_BG1 | DCNT_BG3 | DCNT_OBJ;
|
||||
write16(REG_DISPCNT, ERASE_SRAM_DATA.dispcnt);
|
||||
|
||||
CallbackSetVBlank(EraseSramVBlank);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 761d4 | c4 | Initializes the OAM for the erase sram menu
|
||||
*
|
||||
*/
|
||||
void EraseSramResetOAM(void)
|
||||
{
|
||||
i32 i;
|
||||
|
||||
gOamXOffset_NonGameplay = 0;
|
||||
gOamYOffset_NonGameplay = 0;
|
||||
|
||||
ERASE_SRAM_DATA.currentOption = ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
ERASE_SRAM_DATA.nextOption = ERASE_SRAM_OPTION_CHANGED_FLAG | ERASE_SRAM_OPTION_QUESTION_NO;
|
||||
|
||||
for (i = 0; i < (int)ARRAY_SIZE(ERASE_SRAM_DATA.oam); i++)
|
||||
{
|
||||
ERASE_SRAM_DATA.oam[i] = *(struct MenuOamData*)0x840d048;
|
||||
// FIXME *pOam = sEraseSramMenuOamData_Empty;
|
||||
}
|
||||
|
||||
ERASE_SRAM_DATA.oam[2].oamID = sEraseSramQuestionWindowNoSelectedOamId;
|
||||
ERASE_SRAM_DATA.oam[2].yPosition = sEraseSramMenuCursorPosition[0][1];
|
||||
ERASE_SRAM_DATA.oam[2].xPosition = sEraseSramMenuCursorPosition[0][0];
|
||||
ERASE_SRAM_DATA.oam[2].idChanged = TRUE;
|
||||
|
||||
ERASE_SRAM_DATA.oam[1].oamID = 0;
|
||||
ERASE_SRAM_DATA.oam[1].yPosition = sEraseSramMenuCursorPosition[1][1];
|
||||
ERASE_SRAM_DATA.oam[1].xPosition = sEraseSramMenuCursorPosition[1][0];
|
||||
ERASE_SRAM_DATA.oam[1].idChanged = TRUE;
|
||||
|
||||
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_IDLE;
|
||||
ERASE_SRAM_DATA.oam[0].idChanged = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 76298 | 48 | Updates the cursor position based on the current option
|
||||
*
|
||||
*/
|
||||
void EraseSramUpdateCursorPosition(void)
|
||||
{
|
||||
// Panel position + option position
|
||||
ERASE_SRAM_DATA.oam[0].yPosition = sEraseSramMenuCursorPosition[ERASE_SRAM_DATA.currentOption >> 1][1] + sEraseSramMenuCursorPositionOffset[ERASE_SRAM_DATA.currentOption][1];
|
||||
ERASE_SRAM_DATA.oam[0].xPosition = sEraseSramMenuCursorPosition[ERASE_SRAM_DATA.currentOption >> 1][0] + sEraseSramMenuCursorPositionOffset[ERASE_SRAM_DATA.currentOption][0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 762e0 | 78 | Erase sram menu V-blank code
|
||||
*
|
||||
*/
|
||||
void EraseSramVBlank(void)
|
||||
{
|
||||
dma_set(3, gOamData, OAM_BASE, (DMA_ENABLE | DMA_32BIT) << 16 | OAM_SIZE / 4);
|
||||
|
||||
write16(REG_BLDY, gWrittenToBLDY_NonGameplay);
|
||||
|
||||
write16(REG_BG1HOFS, gBG1HOFS_NonGameplay / 4);
|
||||
write16(REG_BG1VOFS, gBG1VOFS_NonGameplay / 4);
|
||||
|
||||
write16(REG_BG3HOFS, gBG3HOFS_NonGameplay / 4);
|
||||
write16(REG_BG3VOFS, gBG3VOFS_NonGameplay / 4);
|
||||
|
||||
write16(REG_BLDCNT, ERASE_SRAM_DATA.bldcnt);
|
||||
write16(REG_DISPCNT, ERASE_SRAM_DATA.dispcnt);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 76358 | c | Empty v-blank for the erase sram menu
|
||||
*
|
||||
*/
|
||||
void EraseSramVBlank_Empty(void)
|
||||
{
|
||||
vu8 c = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 76364 | 2c | Processes the OAM for the erase sram menu
|
||||
*
|
||||
*/
|
||||
void EraseSramProcessOAM(void)
|
||||
{
|
||||
gNextOamSlot = 0;
|
||||
process_menu_oam(ARRAY_SIZE(ERASE_SRAM_DATA.oam), ERASE_SRAM_DATA.oam, sEraseSramMenuOam);
|
||||
ResetFreeOAM();
|
||||
}
|
||||
|
@ -1105,7 +1105,7 @@ void TitleScreenInit(void)
|
||||
|
||||
gNextOamSlot = 0;
|
||||
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
ResetFreeOAM();
|
||||
|
||||
gOamXOffset_NonGameplay = gOamYOffset_NonGameplay = 0;
|
||||
|
@ -28,7 +28,7 @@ void SoftresetCheck(void)
|
||||
void Softreset(void)
|
||||
{
|
||||
sub_0805d034();
|
||||
sub_080033dc();
|
||||
unk_33dc();
|
||||
|
||||
write16(REG_IME, FALSE);
|
||||
write16(REG_IE, 0);
|
||||
@ -41,7 +41,7 @@ void Softreset(void)
|
||||
dma_fill32(3, 0, EWRAM_BASE, 0x40000);
|
||||
dma_fill32(3, 0, IWRAM_BASE, 0x7e00);
|
||||
|
||||
ClearGFXRAM();
|
||||
ClearGfxRam();
|
||||
LoadInterruptCode();
|
||||
CallbackSetVBlank(SoftresetVBlankCallback);
|
||||
read_sram();
|
||||
|
@ -21,7 +21,8 @@ subDirs: array = [
|
||||
"cutscenes/BeforeCharlie/",
|
||||
"cutscenes/StatueOpening/",
|
||||
"menus/",
|
||||
"menus/TitleScreen",
|
||||
"menus/TitleScreen/",
|
||||
"menus/EraseSram/",
|
||||
]
|
||||
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user