tcg: start looking at init

This commit is contained in:
Oliver Bell committed 2025-09-21 19:45:28 +01:00
1 parent 4f7a8e1232
commit e876edfb76
5 files changed
+237 -136

No files matched your search

+2 -1
View File
@@ -68,7 +68,8 @@ Temporary Items
build
tools/agbcc
**/sound/songs/midi/*.s
/ctx.c
**/ctx.c
**/ctx.h
reports
.vscode/*.log
*.gbapal
+9
View File
@@ -69,6 +69,7 @@ ELF := $(ROM:.gba=.elf)
MAP := $(ROM:.gba=.map)
LDSCRIPT := $(OBJ_DIR)/ldscript.txt
INCLUDE_DIRS = include
C_SUBDIR = src
ASM_SUBDIR = asm
DATA_ASM_SUBDIR = data
@@ -89,6 +90,8 @@ $(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR) $(SOUND_ASM_
C_SRCS := $(wildcard $(C_SUBDIR)/*.c)
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
C_HEADERS := $(shell find $(INCLUDE_DIRS) -name "*.h" -not -path "*/platform/*")
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
@@ -202,3 +205,9 @@ $(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
@echo "$(AS) <flags> -I sound -o $@ $<"
@$(AS) $(ASFLAGS) -I sound -o $@ $<
CONTEXT_FLAGS := -DM2C -DPLATFORM_GBA=1 -DGEN_CTX=1 -Dsize_t=int -D "offsetof(TYPE, MEMBER)"="((size_t)&((TYPE *)0)->MEMBER)"
ctx.c: $(C_HEADERS)
@for header in $(C_HEADERS); do echo "#include \"$$header\""; done > ctx.h
gcc -P -E -dD -undef -I ../tools/agbcc/include -I include $(CONTEXT_FLAGS) ctx.h | sed '/^\/\/ TODO: Remove M2C occurences EVERYWHERE once ctx is not needed anymore!/d' | sed '/#undef/d' | sed '/typedef unsigned long int int;/d' | sed 's/__attribute__((.*))//' | sed '/^#define __STDC/d' > ctx.c
+132 -132
View File
@@ -74,10 +74,10 @@ _020002C8:
lsls r0, r1, #0x18
cmp r0, #0
bge _0200030C
ldr r1, _02000300 @ =IWRAM_START + 0x80
ldr r1, _02000300 @ =gUnknown_03000080
movs r0, #6
strb r0, [r1]
ldr r0, _02000304 @ =IWRAM_START + 0x84
ldr r0, _02000304 @ =gUnknown_03000084
movs r4, #0
str r4, [r0]
bl sub_0200043c
@@ -92,14 +92,14 @@ _020002C8:
strb r0, [r1]
b _0200032C
.align 2, 0
_02000300: .4byte IWRAM_START + 0x80
_02000304: .4byte IWRAM_START + 0x84
_02000300: .4byte gUnknown_03000080
_02000304: .4byte gUnknown_03000084
_02000308: .4byte gUnknown_03003B80
_0200030C:
ldr r1, _02000344 @ =IWRAM_START + 0x80
ldr r1, _02000344 @ =gUnknown_03000080
mov r0, r8
strb r0, [r1]
ldr r0, _02000348 @ =IWRAM_START + 0x84
ldr r0, _02000348 @ =gUnknown_03000084
str r6, [r0]
ldrb r0, [r1]
adds r0, #0xa
@@ -124,8 +124,8 @@ _0200032C:
adds r0, r1, #0
b _02000370
.align 2, 0
_02000344: .4byte IWRAM_START + 0x80
_02000348: .4byte IWRAM_START + 0x84
_02000344: .4byte gUnknown_03000080
_02000348: .4byte gUnknown_03000084
_0200034C: .4byte gUnknown_03003B80
_02000350: .4byte 0x00000858
_02000354: .4byte gUnknown_02000008
@@ -179,7 +179,7 @@ sub_020003ac: @ 0x020003ac
ldr r4, _02000420 @ =gUnknown_03003B80
ldr r0, _02000424 @ =0x00001965
strh r0, [r4, #2]
ldr r1, _02000428 @ =IWRAM_START + 0x84
ldr r1, _02000428 @ =gUnknown_03000084
ldr r0, [r1]
adds r0, #1
str r0, [r1]
@@ -198,7 +198,7 @@ sub_020003ac: @ 0x020003ac
bl VBlankIntrWait
bl m4aSoundVSyncOff
movs r5, #0
ldr r4, _02000434 @ =IWRAM_START + 0x80
ldr r4, _02000434 @ =gUnknown_03000080
_020003E8:
ldrb r0, [r4]
adds r0, #1
@@ -229,10 +229,10 @@ _02000410:
.align 2, 0
_02000420: .4byte gUnknown_03003B80
_02000424: .4byte 0x00001965
_02000428: .4byte IWRAM_START + 0x84
_02000428: .4byte gUnknown_03000084
_0200042C: .4byte gUnknown_03005274
_02000430: .4byte 0x00000856
_02000434: .4byte IWRAM_START + 0x80
_02000434: .4byte gUnknown_03000080
_02000438: .4byte 0x00000858
thumb_func_start sub_0200043c
@@ -304,7 +304,7 @@ sub_02000480: @ 0x02000480
movs r0, #0x47
strh r0, [r1]
ldr r0, _02000548 @ =sub_020006b8
ldr r4, _0200054C @ =IWRAM_START + 0x88
ldr r4, _0200054C @ =gUnknown_03000088
ldr r2, _02000550 @ =0x04000148
adds r1, r4, #0
bl CpuSet
@@ -315,7 +315,7 @@ sub_02000480: @ 0x02000480
strb r5, [r0]
ldr r0, _0200055C @ =gUnknown_030043EC
strb r5, [r0]
ldr r1, _02000560 @ =IWRAM_START + 0x5B1
ldr r1, _02000560 @ =gUnknown_030005B1
movs r0, #0xa
strb r0, [r1]
ldr r0, _02000564 @ =gUnknown_030043E8
@@ -325,19 +325,19 @@ sub_02000480: @ 0x02000480
strb r5, [r0]
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _02000570 @ =IWRAM_START + 0x5B0
ldr r0, _02000570 @ =gUnknown_030005B0
strb r5, [r0]
ldr r0, _02000574 @ =IWRAM_START + 0x5BC
ldr r0, _02000574 @ =gUnknown_030005BC
mov r2, r8
str r2, [r0]
ldr r3, _02000578 @ =IWRAM_START + 0x5A8
ldr r3, _02000578 @ =gUnknown_030005A8
ldr r2, _0200057C @ =0x080000AF
ldrb r0, [r2]
lsls r0, r0, #0x18
ldr r1, _02000580 @ =0x004F5341
orrs r0, r1
str r0, [r3]
ldr r3, _02000584 @ =IWRAM_START + 0x5AC
ldr r3, _02000584 @ =gUnknown_030005AC
ldrb r0, [r2]
lsls r0, r0, #0x18
ldr r1, _02000588 @ =0x00425347
@@ -367,21 +367,21 @@ _0200053C: .4byte 0x04000158
_02000540: .4byte 0x04000154
_02000544: .4byte 0x04000140
_02000548: .4byte sub_020006b8
_0200054C: .4byte IWRAM_START + 0x88
_0200054C: .4byte gUnknown_03000088
_02000550: .4byte 0x04000148
_02000554: .4byte gIntrTable
_02000558: .4byte gUnknown_030043DC
_0200055C: .4byte gUnknown_030043EC
_02000560: .4byte IWRAM_START + 0x5B1
_02000560: .4byte gUnknown_030005B1
_02000564: .4byte gUnknown_030043E8
_02000568: .4byte gUnknown_030043D8
_0200056C: .4byte gUnknown_030043E4
_02000570: .4byte IWRAM_START + 0x5B0
_02000574: .4byte IWRAM_START + 0x5BC
_02000578: .4byte IWRAM_START + 0x5A8
_02000570: .4byte gUnknown_030005B0
_02000574: .4byte gUnknown_030005BC
_02000578: .4byte gUnknown_030005A8
_0200057C: .4byte 0x080000AF
_02000580: .4byte 0x004F5341
_02000584: .4byte IWRAM_START + 0x5AC
_02000584: .4byte gUnknown_030005AC
_02000588: .4byte 0x00425347
_0200058C: .4byte 0x04000202
@@ -393,7 +393,7 @@ sub_02000590: @ 0x02000590
ldr r6, _020005AC @ =0x04000208
movs r4, #0
strh r4, [r6]
ldr r7, _020005B0 @ =IWRAM_START + 0x5B1
ldr r7, _020005B0 @ =gUnknown_030005B1
ldrb r0, [r7]
cmp r0, #9
bhi _020005B4
@@ -403,7 +403,7 @@ sub_02000590: @ 0x02000590
b _0200068A
.align 2, 0
_020005AC: .4byte 0x04000208
_020005B0: .4byte IWRAM_START + 0x5B1
_020005B0: .4byte gUnknown_030005B1
_020005B4:
ldr r0, _0200060C @ =gUnknown_030043EC
mov ip, r0
@@ -440,9 +440,9 @@ _020005B4:
strb r0, [r7]
ldr r0, _02000620 @ =gUnknown_030043E8
strb r4, [r0]
ldr r0, _02000624 @ =IWRAM_START + 0x5B0
ldr r0, _02000624 @ =gUnknown_030005B0
strb r4, [r0]
ldr r0, _02000628 @ =IWRAM_START + 0x5BC
ldr r0, _02000628 @ =gUnknown_030005BC
str r3, [r0]
adds r1, #0xc2
movs r0, #0x80
@@ -456,10 +456,10 @@ _02000614: .4byte 0x04000158
_02000618: .4byte 0x04000154
_0200061C: .4byte gUnknown_030043DC
_02000620: .4byte gUnknown_030043E8
_02000624: .4byte IWRAM_START + 0x5B0
_02000628: .4byte IWRAM_START + 0x5BC
_02000624: .4byte gUnknown_030005B0
_02000628: .4byte gUnknown_030005BC
_0200062C:
ldr r5, _0200063C @ =IWRAM_START + 0x5B0
ldr r5, _0200063C @ =gUnknown_030005B0
ldrb r0, [r5]
cmp r0, #0xa
bhi _02000640
@@ -468,7 +468,7 @@ _0200062C:
strb r0, [r5]
b _0200068A
.align 2, 0
_0200063C: .4byte IWRAM_START + 0x5B0
_0200063C: .4byte gUnknown_030005B0
_02000640:
ldrh r2, [r6]
mov r8, r2
@@ -500,7 +500,7 @@ _02000640:
ldr r0, _020006AC @ =gUnknown_030043E8
strb r4, [r0]
strb r4, [r5]
ldr r0, _020006B0 @ =IWRAM_START + 0x5BC
ldr r0, _020006B0 @ =gUnknown_030005BC
str r3, [r0]
adds r1, #0xc2
movs r0, #0x80
@@ -522,7 +522,7 @@ _020006A0: .4byte 0x04000158
_020006A4: .4byte 0x04000154
_020006A8: .4byte gUnknown_030043DC
_020006AC: .4byte gUnknown_030043E8
_020006B0: .4byte IWRAM_START + 0x5BC
_020006B0: .4byte gUnknown_030005BC
_020006B4: .4byte 0x04000208
thumb_func_start sub_020006b8
@@ -588,7 +588,7 @@ _0200073A:
cmp r0, #0
beq _0200076A
ldr r0, _02000758 @ =0x04000150
ldr r1, _0200075C @ =IWRAM_START + 0x5AC
ldr r1, _0200075C @ =gUnknown_030005AC
ldr r2, [r0]
ldr r0, [r1]
cmp r2, r0
@@ -599,7 +599,7 @@ _0200073A:
b _02000784
.align 2, 0
_02000758: .4byte 0x04000150
_0200075C: .4byte IWRAM_START + 0x5AC
_0200075C: .4byte gUnknown_030005AC
_02000760: .4byte 0x04000158
_02000764:
movs r0, #0
@@ -642,7 +642,7 @@ _020007A2:
ldr r0, _020007BC @ =0x6F616843
cmp r4, r0
bne _020007C8
ldr r0, _020007C0 @ =IWRAM_START + 0x5B1
ldr r0, _020007C0 @ =gUnknown_030005B1
strb r1, [r0]
ldr r1, _020007C4 @ =gUnknown_030043EC
movs r0, #1
@@ -651,7 +651,7 @@ _020007A2:
.align 2, 0
_020007B8: .4byte 0x04000150
_020007BC: .4byte 0x6F616843
_020007C0: .4byte IWRAM_START + 0x5B1
_020007C0: .4byte gUnknown_030005B1
_020007C4: .4byte gUnknown_030043EC
_020007C8:
movs r4, #0
@@ -676,7 +676,7 @@ _020007E4:
ldr r0, _020007FC @ =0x6F616843
cmp r4, r0
bne _02000808
ldr r0, _02000800 @ =IWRAM_START + 0x5B1
ldr r0, _02000800 @ =gUnknown_030005B1
strb r1, [r0]
ldr r0, _02000804 @ =gUnknown_030043E8
strb r1, [r0]
@@ -684,13 +684,13 @@ _020007E4:
.align 2, 0
_020007F8: .4byte 0x04000150
_020007FC: .4byte 0x6F616843
_02000800: .4byte IWRAM_START + 0x5B1
_02000800: .4byte gUnknown_030005B1
_02000804: .4byte gUnknown_030043E8
_02000808:
ldr r0, _02000830 @ =0x4F414843
cmp r4, r0
bne _02000844
ldr r0, _02000834 @ =IWRAM_START + 0x5B1
ldr r0, _02000834 @ =gUnknown_030005B1
strb r1, [r0]
ldr r1, _02000838 @ =gUnknown_030043E8
movs r0, #1
@@ -709,7 +709,7 @@ _02000818:
b _0200095A
.align 2, 0
_02000830: .4byte 0x4F414843
_02000834: .4byte IWRAM_START + 0x5B1
_02000834: .4byte gUnknown_030005B1
_02000838: .4byte gUnknown_030043E8
_0200083C: .4byte gUnknown_030043F0
_02000840: .4byte 0x00004B43
@@ -834,13 +834,13 @@ _0200092C:
beq _02000948
_02000934:
ldr r0, _02000940 @ =0x04000154
ldr r1, _02000944 @ =IWRAM_START + 0x5BC
ldr r1, _02000944 @ =gUnknown_030005BC
ldr r1, [r1]
str r1, [r0]
b _02000962
.align 2, 0
_02000940: .4byte 0x04000154
_02000944: .4byte IWRAM_START + 0x5BC
_02000944: .4byte gUnknown_030005BC
_02000948:
movs r0, #2
ands r0, r5
@@ -854,10 +854,10 @@ _02000958:
_0200095A:
ldr r0, _02000978 @ =0x04000154
str r4, [r0]
ldr r0, _0200097C @ =IWRAM_START + 0x5BC
ldr r0, _0200097C @ =gUnknown_030005BC
str r4, [r0]
_02000962:
ldr r0, _02000980 @ =IWRAM_START + 0x5B0
ldr r0, _02000980 @ =gUnknown_030005B0
movs r1, #0
strb r1, [r0]
ldr r0, _02000984 @ =0x04000140
@@ -868,17 +868,17 @@ _02000962:
.align 2, 0
_02000974: .4byte 0x04000150
_02000978: .4byte 0x04000154
_0200097C: .4byte IWRAM_START + 0x5BC
_02000980: .4byte IWRAM_START + 0x5B0
_0200097C: .4byte gUnknown_030005BC
_02000980: .4byte gUnknown_030005B0
_02000984: .4byte 0x04000140
thumb_func_start sub_02000988
sub_02000988: @ 0x02000988
push {r4, r5, lr}
adds r3, r0, #0
ldr r0, _020009CC @ =IWRAM_START + 0x5B8
ldr r0, _020009CC @ =gUnknown_030005B8
ldrh r2, [r0]
ldr r1, _020009D0 @ =IWRAM_START + 0x5BA
ldr r1, _020009D0 @ =gUnknown_030005BA
ldrh r0, [r1]
adds r0, #1
adds r5, r1, #0
@@ -887,7 +887,7 @@ sub_02000988: @ 0x02000988
ldr r0, _020009D4 @ =0x6F616843
cmp r3, r0
bne _020009EC
ldr r1, _020009D8 @ =IWRAM_START + 0x5B1
ldr r1, _020009D8 @ =gUnknown_030005B1
movs r0, #0
strb r0, [r1]
ldr r0, _020009DC @ =gUnknown_030043F0
@@ -908,10 +908,10 @@ sub_02000988: @ 0x02000988
strb r0, [r1]
b _02000A36
.align 2, 0
_020009CC: .4byte IWRAM_START + 0x5B8
_020009D0: .4byte IWRAM_START + 0x5BA
_020009CC: .4byte gUnknown_030005B8
_020009D0: .4byte gUnknown_030005BA
_020009D4: .4byte 0x6F616843
_020009D8: .4byte IWRAM_START + 0x5B1
_020009D8: .4byte gUnknown_030005B1
_020009DC: .4byte gUnknown_030043F0
_020009E0: .4byte 0x00004B43
_020009E4: .4byte gUnknown_030043DC
@@ -931,7 +931,7 @@ _020009EC:
cmp r0, #1
bne _02000A10
strh r2, [r1]
ldr r1, _02000A2C @ =IWRAM_START + 0x5B4
ldr r1, _02000A2C @ =gUnknown_030005B4
ldr r0, [r1]
adds r0, #2
str r0, [r1]
@@ -939,10 +939,10 @@ _02000A10:
ldrh r5, [r5]
cmp r4, r5
bne _02000A34
ldr r1, _02000A30 @ =IWRAM_START + 0x5B1
ldr r1, _02000A30 @ =gUnknown_030005B1
movs r0, #0
strb r0, [r1]
ldr r2, _02000A2C @ =IWRAM_START + 0x5B4
ldr r2, _02000A2C @ =gUnknown_030005B4
ldr r1, [r2]
lsrs r0, r3, #0x10
strb r0, [r1]
@@ -951,8 +951,8 @@ _02000A10:
strb r0, [r1, #1]
b _02000A36
.align 2, 0
_02000A2C: .4byte IWRAM_START + 0x5B4
_02000A30: .4byte IWRAM_START + 0x5B1
_02000A2C: .4byte gUnknown_030005B4
_02000A30: .4byte gUnknown_030005B1
_02000A34:
movs r3, #0
_02000A36:
@@ -966,19 +966,19 @@ _02000A36:
sub_02000a40: @ 0x02000a40
push {r4, lr}
adds r3, r0, #0
ldr r0, _02000A84 @ =IWRAM_START + 0x5B8
ldr r0, _02000A84 @ =gUnknown_030005B8
ldrh r2, [r0]
ldr r1, _02000A88 @ =IWRAM_START + 0x5BA
ldr r1, _02000A88 @ =gUnknown_030005BA
ldrh r0, [r1]
adds r0, #1
adds r4, r1, #0
cmp r2, r0
bne _02000AA4
ldr r0, _02000A8C @ =IWRAM_START + 0x5BC
ldr r0, _02000A8C @ =gUnknown_030005BC
ldr r0, [r0]
cmp r0, r3
bne _02000AC0
ldr r1, _02000A90 @ =IWRAM_START + 0x5B1
ldr r1, _02000A90 @ =gUnknown_030005B1
movs r0, #0
strb r0, [r1]
ldr r0, _02000A94 @ =gUnknown_030043F0
@@ -999,31 +999,31 @@ sub_02000a40: @ 0x02000a40
strb r0, [r1]
b _02000ADC
.align 2, 0
_02000A84: .4byte IWRAM_START + 0x5B8
_02000A88: .4byte IWRAM_START + 0x5BA
_02000A8C: .4byte IWRAM_START + 0x5BC
_02000A90: .4byte IWRAM_START + 0x5B1
_02000A84: .4byte gUnknown_030005B8
_02000A88: .4byte gUnknown_030005BA
_02000A8C: .4byte gUnknown_030005BC
_02000A90: .4byte gUnknown_030005B1
_02000A94: .4byte gUnknown_030043F0
_02000A98: .4byte 0x00004B43
_02000A9C: .4byte gUnknown_030043DC
_02000AA0: .4byte gUnknown_030043E4
_02000AA4:
ldr r0, _02000AE4 @ =IWRAM_START + 0x5BC
ldr r0, _02000AE4 @ =gUnknown_030005BC
ldr r0, [r0]
cmp r0, r3
bne _02000AC0
ldr r1, _02000AE8 @ =IWRAM_START + 0x5B1
ldr r1, _02000AE8 @ =gUnknown_030005B1
movs r0, #0
strb r0, [r1]
ldrh r0, [r4]
adds r0, #1
strh r0, [r4]
ldr r1, _02000AEC @ =IWRAM_START + 0x5B4
ldr r1, _02000AEC @ =gUnknown_030005B4
ldr r0, [r1]
adds r0, #2
str r0, [r1]
_02000AC0:
ldr r0, _02000AEC @ =IWRAM_START + 0x5B4
ldr r0, _02000AEC @ =gUnknown_030005B4
ldr r1, [r0]
ldrb r0, [r1]
lsls r3, r0, #0x10
@@ -1043,9 +1043,9 @@ _02000ADC:
pop {r1}
bx r1
.align 2, 0
_02000AE4: .4byte IWRAM_START + 0x5BC
_02000AE8: .4byte IWRAM_START + 0x5B1
_02000AEC: .4byte IWRAM_START + 0x5B4
_02000AE4: .4byte gUnknown_030005BC
_02000AE8: .4byte gUnknown_030005B1
_02000AEC: .4byte gUnknown_030005B4
thumb_func_start sub_02000af0
sub_02000af0: @ 0x02000af0
@@ -1066,13 +1066,13 @@ _02000B08: .4byte gUnknown_030043DC
thumb_func_start sub_02000b0c
sub_02000b0c: @ 0x02000b0c
push {r4, lr}
ldr r2, _02000B48 @ =IWRAM_START + 0x5B1
ldr r2, _02000B48 @ =gUnknown_030005B1
movs r1, #0
strb r1, [r2]
ldr r2, _02000B4C @ =IWRAM_START + 0x5B4
ldr r2, _02000B4C @ =gUnknown_030005B4
ldr r1, _02000B50 @ =gUnknown_03003350
str r1, [r2]
ldr r3, _02000B54 @ =IWRAM_START + 0x5B8
ldr r3, _02000B54 @ =gUnknown_030005B8
lsrs r1, r0, #8
movs r4, #0xff
lsls r4, r4, #8
@@ -1081,7 +1081,7 @@ sub_02000b0c: @ 0x02000b0c
lsrs r0, r0, #0x18
orrs r1, r0
strh r1, [r3]
ldr r1, _02000B58 @ =IWRAM_START + 0x5BA
ldr r1, _02000B58 @ =gUnknown_030005BA
movs r0, #0
strh r0, [r1]
ldr r1, _02000B5C @ =gUnknown_030043E0
@@ -1095,24 +1095,24 @@ sub_02000b0c: @ 0x02000b0c
pop {r0}
bx r0
.align 2, 0
_02000B48: .4byte IWRAM_START + 0x5B1
_02000B4C: .4byte IWRAM_START + 0x5B4
_02000B48: .4byte gUnknown_030005B1
_02000B4C: .4byte gUnknown_030005B4
_02000B50: .4byte gUnknown_03003350
_02000B54: .4byte IWRAM_START + 0x5B8
_02000B58: .4byte IWRAM_START + 0x5BA
_02000B54: .4byte gUnknown_030005B8
_02000B58: .4byte gUnknown_030005BA
_02000B5C: .4byte gUnknown_030043E0
_02000B60: .4byte gUnknown_030043D8
thumb_func_start sub_02000b64
sub_02000b64: @ 0x02000b64
push {r4, lr}
ldr r2, _02000B98 @ =IWRAM_START + 0x5B1
ldr r2, _02000B98 @ =gUnknown_030005B1
movs r1, #0
strb r1, [r2]
ldr r2, _02000B9C @ =IWRAM_START + 0x5B4
ldr r2, _02000B9C @ =gUnknown_030005B4
ldr r1, _02000BA0 @ =gUnknown_03003BD8
str r1, [r2]
ldr r3, _02000BA4 @ =IWRAM_START + 0x5B8
ldr r3, _02000BA4 @ =gUnknown_030005B8
lsrs r1, r0, #8
movs r4, #0xff
lsls r4, r4, #8
@@ -1121,7 +1121,7 @@ sub_02000b64: @ 0x02000b64
lsrs r0, r0, #0x18
orrs r1, r0
strh r1, [r3]
ldr r1, _02000BA8 @ =IWRAM_START + 0x5BA
ldr r1, _02000BA8 @ =gUnknown_030005BA
movs r0, #0
strh r0, [r1]
ldr r1, _02000BAC @ =gUnknown_030043E4
@@ -1131,11 +1131,11 @@ sub_02000b64: @ 0x02000b64
pop {r0}
bx r0
.align 2, 0
_02000B98: .4byte IWRAM_START + 0x5B1
_02000B9C: .4byte IWRAM_START + 0x5B4
_02000B98: .4byte gUnknown_030005B1
_02000B9C: .4byte gUnknown_030005B4
_02000BA0: .4byte gUnknown_03003BD8
_02000BA4: .4byte IWRAM_START + 0x5B8
_02000BA8: .4byte IWRAM_START + 0x5BA
_02000BA4: .4byte gUnknown_030005B8
_02000BA8: .4byte gUnknown_030005BA
_02000BAC: .4byte gUnknown_030043E4
thumb_func_start sub_02000bb0
@@ -1143,7 +1143,7 @@ sub_02000bb0: @ 0x02000bb0
ldr r0, _02000BC4 @ =0x04000150
ldr r0, [r0]
ldr r1, _02000BC8 @ =0x04000154
ldr r0, _02000BCC @ =IWRAM_START + 0x5A8
ldr r0, _02000BCC @ =gUnknown_030005A8
ldr r0, [r0]
str r0, [r1]
adds r1, #4
@@ -1153,7 +1153,7 @@ sub_02000bb0: @ 0x02000bb0
.align 2, 0
_02000BC4: .4byte 0x04000150
_02000BC8: .4byte 0x04000154
_02000BCC: .4byte IWRAM_START + 0x5A8
_02000BCC: .4byte gUnknown_030005A8
thumb_func_start sub_02000bd0
sub_02000bd0: @ 0x02000bd0
@@ -1273,7 +1273,7 @@ sub_02000c90: @ 0x02000c90
strb r1, [r0]
subs r0, #1
strb r1, [r0]
ldr r2, _02000CF0 @ =IWRAM_START + 0x5C0
ldr r2, _02000CF0 @ =gUnknown_030005C0
movs r1, #0x47
adds r0, r2, #0
adds r0, #0x45
@@ -1284,9 +1284,9 @@ _02000CC0:
cmp r0, r2
bge _02000CC0
movs r1, #0
ldr r4, _02000CF4 @ =IWRAM_START + 0x606
ldr r3, _02000CF8 @ =IWRAM_START + 0x607
ldr r2, _02000CFC @ =IWRAM_START + 0x608
ldr r4, _02000CF4 @ =gUnknown_03000606
ldr r3, _02000CF8 @ =gUnknown_03000607
ldr r2, _02000CFC @ =gUnknown_03000608
ldr r0, _02000D00 @ =gUnknown_03005270
strb r1, [r0]
strb r1, [r2]
@@ -1299,10 +1299,10 @@ _02000CC0:
_02000CE4: .4byte gUnknown_03004400
_02000CE8: .4byte sub_020013DC
_02000CEC: .4byte 0x02000F31
_02000CF0: .4byte IWRAM_START + 0x5C0
_02000CF4: .4byte IWRAM_START + 0x606
_02000CF8: .4byte IWRAM_START + 0x607
_02000CFC: .4byte IWRAM_START + 0x608
_02000CF0: .4byte gUnknown_030005C0
_02000CF4: .4byte gUnknown_03000606
_02000CF8: .4byte gUnknown_03000607
_02000CFC: .4byte gUnknown_03000608
_02000D00: .4byte gUnknown_03005270
thumb_func_start sub_02000d04
@@ -1312,7 +1312,7 @@ sub_02000d04: @ 0x02000d04
adds r4, r1, #0
lsls r2, r2, #0x18
lsrs r6, r2, #0x18
ldr r0, _02000D1C @ =IWRAM_START + 0x606
ldr r0, _02000D1C @ =gUnknown_03000606
ldrb r1, [r0]
mov ip, r0
cmp r1, #0x45
@@ -1320,10 +1320,10 @@ sub_02000d04: @ 0x02000d04
movs r0, #0
b _02000DAA
.align 2, 0
_02000D1C: .4byte IWRAM_START + 0x606
_02000D1C: .4byte gUnknown_03000606
_02000D20:
ldr r0, _02000D68 @ =IWRAM_START + 0x5C0
ldr r5, _02000D6C @ =IWRAM_START + 0x607
ldr r0, _02000D68 @ =gUnknown_030005C0
ldr r5, _02000D6C @ =gUnknown_03000607
ldrb r1, [r5]
adds r2, r1, #1
strb r2, [r5]
@@ -1360,8 +1360,8 @@ _02000D3E:
strb r3, [r4, #5]
b _02000D8A
.align 2, 0
_02000D68: .4byte IWRAM_START + 0x5C0
_02000D6C: .4byte IWRAM_START + 0x607
_02000D68: .4byte gUnknown_030005C0
_02000D6C: .4byte gUnknown_03000607
_02000D70: .4byte gUnknown_03004400
_02000D74:
ldrb r0, [r4, #4]
@@ -1402,12 +1402,12 @@ sub_02000db0: @ 0x02000db0
push {r4, lr}
bl sub_02000f34
ldr r0, _02000DFC @ =gUnknown_03004400
ldr r1, _02000E00 @ =IWRAM_START + 0x610
ldr r1, _02000E00 @ =gUnknown_03000610
ldr r2, _02000E04 @ =0x04000288
bl CpuSet
movs r1, #0
ldr r4, _02000E08 @ =gUnknown_03001030
ldr r3, _02000E0C @ =IWRAM_START + 0x5C0
ldr r3, _02000E0C @ =gUnknown_030005C0
_02000DC6:
lsls r0, r1, #0x10
asrs r0, r0, #0x10
@@ -1422,15 +1422,15 @@ _02000DC6:
cmp r0, #0x45
ble _02000DC6
ldr r1, _02000E10 @ =gUnknown_03001076
ldr r0, _02000E14 @ =IWRAM_START + 0x606
ldr r0, _02000E14 @ =gUnknown_03000606
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _02000E18 @ =gUnknown_03001077
ldr r0, _02000E1C @ =IWRAM_START + 0x607
ldr r0, _02000E1C @ =gUnknown_03000607
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _02000E20 @ =gUnknown_03001078
ldr r0, _02000E24 @ =IWRAM_START + 0x608
ldr r0, _02000E24 @ =gUnknown_03000608
ldrb r0, [r0]
strb r0, [r1]
pop {r4}
@@ -1438,27 +1438,27 @@ _02000DC6:
bx r0
.align 2, 0
_02000DFC: .4byte gUnknown_03004400
_02000E00: .4byte IWRAM_START + 0x610
_02000E00: .4byte gUnknown_03000610
_02000E04: .4byte 0x04000288
_02000E08: .4byte gUnknown_03001030
_02000E0C: .4byte IWRAM_START + 0x5C0
_02000E0C: .4byte gUnknown_030005C0
_02000E10: .4byte gUnknown_03001076
_02000E14: .4byte IWRAM_START + 0x606
_02000E14: .4byte gUnknown_03000606
_02000E18: .4byte gUnknown_03001077
_02000E1C: .4byte IWRAM_START + 0x607
_02000E1C: .4byte gUnknown_03000607
_02000E20: .4byte gUnknown_03001078
_02000E24: .4byte IWRAM_START + 0x608
_02000E24: .4byte gUnknown_03000608
thumb_func_start sub_02000e28
sub_02000e28: @ 0x02000e28
push {r4, lr}
bl sub_02000fd4
ldr r0, _02000E7C @ =IWRAM_START + 0x610
ldr r0, _02000E7C @ =gUnknown_03000610
ldr r1, _02000E80 @ =gUnknown_03004400
ldr r2, _02000E84 @ =0x04000288
bl CpuSet
movs r1, #0
ldr r4, _02000E88 @ =IWRAM_START + 0x5C0
ldr r4, _02000E88 @ =gUnknown_030005C0
ldr r3, _02000E8C @ =gUnknown_03001030
_02000E3E:
lsls r0, r1, #0x10
@@ -1473,15 +1473,15 @@ _02000E3E:
asrs r0, r0, #0x10
cmp r0, #0x45
ble _02000E3E
ldr r1, _02000E90 @ =IWRAM_START + 0x606
ldr r1, _02000E90 @ =gUnknown_03000606
ldr r0, _02000E94 @ =gUnknown_03001076
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _02000E98 @ =IWRAM_START + 0x607
ldr r1, _02000E98 @ =gUnknown_03000607
ldr r0, _02000E9C @ =gUnknown_03001077
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _02000EA0 @ =IWRAM_START + 0x608
ldr r1, _02000EA0 @ =gUnknown_03000608
ldr r0, _02000EA4 @ =gUnknown_03001078
ldrb r0, [r0]
strb r0, [r1]
@@ -1492,16 +1492,16 @@ _02000E3E:
pop {r0}
bx r0
.align 2, 0
_02000E7C: .4byte IWRAM_START + 0x610
_02000E7C: .4byte gUnknown_03000610
_02000E80: .4byte gUnknown_03004400
_02000E84: .4byte 0x04000288
_02000E88: .4byte IWRAM_START + 0x5C0
_02000E88: .4byte gUnknown_030005C0
_02000E8C: .4byte gUnknown_03001030
_02000E90: .4byte IWRAM_START + 0x606
_02000E90: .4byte gUnknown_03000606
_02000E94: .4byte gUnknown_03001076
_02000E98: .4byte IWRAM_START + 0x607
_02000E98: .4byte gUnknown_03000607
_02000E9C: .4byte gUnknown_03001077
_02000EA0: .4byte IWRAM_START + 0x608
_02000EA0: .4byte gUnknown_03000608
_02000EA4: .4byte gUnknown_03001078
_02000EA8: .4byte gUnknown_03005270
@@ -1545,8 +1545,8 @@ sub_02000ed4: @ 0x02000ed4
adds r1, r1, r3
ldrb r2, [r0, #5]
strb r2, [r1, #5]
ldr r3, _02000F24 @ =IWRAM_START + 0x5C0
ldr r4, _02000F28 @ =IWRAM_START + 0x608
ldr r3, _02000F24 @ =gUnknown_030005C0
ldr r4, _02000F28 @ =gUnknown_03000608
ldrb r1, [r4]
adds r2, r1, #1
strb r2, [r4]
@@ -1561,7 +1561,7 @@ sub_02000ed4: @ 0x02000ed4
movs r0, #0
strb r0, [r4]
_02000F12:
ldr r1, _02000F2C @ =IWRAM_START + 0x606
ldr r1, _02000F2C @ =gUnknown_03000606
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
@@ -1570,9 +1570,9 @@ _02000F12:
bx r0
.align 2, 0
_02000F20: .4byte gUnknown_03004400
_02000F24: .4byte IWRAM_START + 0x5C0
_02000F28: .4byte IWRAM_START + 0x608
_02000F2C: .4byte IWRAM_START + 0x606
_02000F24: .4byte gUnknown_030005C0
_02000F28: .4byte gUnknown_03000608
_02000F2C: .4byte gUnknown_03000606
_02000F30:
.byte 0x70, 0x47, 0x00, 0x00
+16
View File
@@ -14,6 +14,22 @@ SECTIONS {
ALIGN(4)
{
. = 0x00000000; IntrMain_RAM = .;
. = 0x00000080; gUnknown_03000080 = .;
. = 0x00000084; gUnknown_03000084 = .;
. = 0x00000088; gUnknown_03000088 = .;
. = 0x000005A8; gUnknown_030005A8 = .;
. = 0x000005AC; gUnknown_030005AC = .;
. = 0x000005B0; gUnknown_030005B0 = .;
. = 0x000005B1; gUnknown_030005B1 = .;
. = 0x000005B4; gUnknown_030005B4 = .;
. = 0x000005B8; gUnknown_030005B8 = .;
. = 0x000005BA; gUnknown_030005BA = .;
. = 0x000005BC; gUnknown_030005BC = .;
. = 0x000005C0; gUnknown_030005C0 = .;
. = 0x00000606; gUnknown_03000606 = .;
. = 0x00000607; gUnknown_03000607 = .;
. = 0x00000608; gUnknown_03000608 = .;
. = 0x00000610; gUnknown_03000610 = .;
. = 0x00001030; gUnknown_03001030 = .;
. = 0x00001076; gUnknown_03001076 = .;
. = 0x00001077; gUnknown_03001077 = .;
+78 -3
View File
@@ -6,17 +6,92 @@ extern IntrFunc gIntrTable[4];
// TCG = Tiny Chao Garden
struct TCG_SaveSectorHeader {
u32 security, version;
u16 checksum;
u16 unk2;
u32 unk4;
};
struct TCG_SaveSectorData {
struct TCG_SaveSectorHeader header;
u8 padding_8[0x850];
u32 unk8;
u32 unkC;
u32 unk10;
u32 unk14;
u32 unk18;
u8 unk1C;
u8 unk1D;
u8 unk1E;
u8 unk1F;
u8 unk20;
u8 filler21[0x38];
u8 unk59;
u8 filler[0xb];
u32 unk64;
u8 unk68;
u8 pad[0x7FE];
}; /* size:0x858 according to sub_02000248 */
extern struct GameConfig gUnknown_02000008;
// TCG = Tiny Chao Garden
#define TCG_FIRST_SAVE_SECTOR 10
#define TCG_SAVE_SECTOR_COUNT 6
extern struct TCG_SaveSectorData gUnknown_03003B80;
void sub_02011e9c(void);
s16 sub_0200185c(s8 *a, s32 b);
extern u32 gUnknown_03000080;
extern u32 gUnknown_03000084;
extern u8 gUnknown_03003BD8[2];
extern void sub_02001528(u32);
extern u32 gUnknown_03005274;
void sub_0200043c(void);
// https://decomp.me/scratch/rGp3q
// void sub_02000248(void)
// {
// u32 i;
// s8 min = -1;
// u32 p = 0;
// IdentifyFlash();
// SetFlashTimerIntr(2, gIntrTable[1]);
// for (i = 0; i < 6; i++) {
// ReadFlash(i + 10, 0, &gUnknown_03003B80, sizeof(struct TCG_SaveSectorData));
// if (gUnknown_03003B80.header.unk2 == 0x1965) {
// s16 checksum = sub_0200185c(&gUnknown_03003B80.header.unk2, sizeof(struct TCG_SaveSectorData) - sizeof(u16));
// if (checksum == gUnknown_03003B80.header.checksum) {
// if (min < 0) {
// min = i;
// p = gUnknown_03003B80.header.unk4;
// } else if (p < gUnknown_03003B80.header.unk4) {
// min = i;
// p = gUnknown_03003B80.header.unk4;
// }
// }
// }
// }
// if (min < 0) {
// gUnknown_03000080 = 6;
// gUnknown_03000084 = 0;
// sub_0200043c();
// gUnknown_03003B80.unk59 = 0;
// gUnknown_03003B80.unk1F = 0x58;
// gUnknown_03003B80.unk20 = 0x68;
// } else {
// gUnknown_03000080 = min;
// gUnknown_03000084 = p;
// ReadFlash(min + 10, 0, &gUnknown_03003B80, sizeof(struct TCG_SaveSectorData));
// sub_02001528(gUnknown_03003B80.unk18);
// }
// gUnknown_03005274 = gUnknown_03003B80.unkC;
// gUnknown_03003B80.unk64 = gUnknown_03003B80.unkC << 0x18 | (gUnknown_03003B80.unkC & 0xFF00 << 8)
// | (gUnknown_03003B80.unkC & 0xFF0000) >> 8 | gUnknown_03003B80.unkC >> 0x18;
// gUnknown_03003B80.unk68 = 0;
// }