Skip to content

Commit 5991824

Browse files
committed
Revamp build system, decompile scientist and more
1 parent fb89647 commit 5991824

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3775
-12695
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/audio/samples.s
88
/audio/voice_groups.s
99
/audio/tracks.s
10+
/build/*
1011

1112
/expected/*
1213
/nonmatchings/*

Makefile

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,18 @@ PREPROC = tools/preproc/preproc
3939

4040
# Flags
4141
ASFLAGS = -mcpu=arm7tdmi
42-
CFLAGS = -Werror -O2 -mthumb-interwork -fhex-asm
42+
CFLAGS = -O2 -mthumb-interwork -fhex-asm
4343
CPPFLAGS = -nostdinc -Iinclude/
44+
NOMORENOPS = '.text\n\t.align 2, 0 @ dont insert nops\n'
4445

4546
# Objects
46-
CSRC = $(wildcard src/**.c) $(wildcard src/**/**.c) $(wildcard src/**/**/**.c) $(wildcard nonmatchings/*.c)
47-
.PRECIOUS: $(CSRC:.c=.s)
48-
ASMSRC = $(CSRC:.c=.s) $(wildcard asm/**.s) $(wildcard asm/**/*.s) $(wildcard audio/*.s) $(wildcard audio/**/*.s) $(wildcard audio/**/**/*.s) $(wildcard expected/*.s) $(wildcard nonmatchings/*.s)
49-
OBJ = $(ASMSRC:.s=.o)
47+
CSRC = $(wildcard src/**.c) $(wildcard src/**/**.c) $(wildcard src/**/**/**.c)
48+
.PRECIOUS: $(CSRC:%.c=build/%.s)
49+
ASMSRC = $(wildcard asm/**.s) $(wildcard asm/**/*.s) $(wildcard audio/*.s) $(wildcard audio/**/*.s) $(wildcard audio/**/**/*.s)
50+
OBJ = $(CSRC:%.c=build/%.o) $(ASMSRC:%.s=build/%.o)
51+
52+
# Build subdirectories in build/
53+
$(shell mkdir -p $(sort $(dir $(OBJ))))
5054

5155
# Enable verbose output
5256
ifeq ($(V),1)
@@ -79,12 +83,8 @@ clean:
7983
$Q$(RM) $(TARGET) $(ELF) $(MAP)
8084
$(MSG) RM \*.dump
8185
$Q$(RM) $(DUMPS)
82-
$(MSG) RM \*.o
83-
$Q$(RM) $(OBJ)
84-
$(MSG) RM data/*.s
85-
$Q$(RM) $(DATA)
86-
$(MSG) RM src/\*\*/\*.s
87-
$Q$(RM) $(CSRC:.c=.s)
86+
$(MSG) RM build/
87+
$Q$(RM) -r build
8888
$(MSG) RM $(GBAFIX)
8989
$Q$(RM) $(GBAFIX)
9090
$(MSG) RM data/
@@ -105,34 +105,36 @@ help:
105105

106106
$(TARGET): $(ELF) $(GBAFIX)
107107
$(MSG) OBJCOPY $@
108-
$Q$(OBJCOPY) -O binary --gap-fill 0xff --pad-to 0x08800000 $< $@
108+
$Q$(OBJCOPY) --strip-debug -O binary --gap-fill 0xff --pad-to 0x08800000 $< $@
109109
$(MSG) GBAFIX $@
110110
$Q$(GBAFIX) $@ -t$(GAME_TITLE) -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION)
111111

112112
$(ELF) $(MAP): $(OBJ) linker.ld
113113
$(MSG) LD $@
114-
$Q$(LD) $(LDFLAGS) -n -T linker.ld -Map=$(MAP) -o $@
114+
$Qcd build && $(LD) $(LDFLAGS) -n -T ../linker.ld -Map=../$(MAP) -o ../$@
115115

116116
%.dump: %.gba
117117
$(MSG) OBJDUMP $@
118118
$Q$(OBJDUMP) -D -bbinary -marm7tdmi -Mforce-thumb $< | $(TAIL) -n+3 >$@
119119
#--stop-address 0x8c71c
120-
%.o: %.s
120+
build/%.o: %.s
121121
$(MSG) AS $@
122122
$Q$(AS) $(ASFLAGS) $< -o $@
123123

124-
%.s: %.c
125-
$(MSG) CC $@
126-
$Q$(PREPROC) $< | $(CPP) $(CPPFLAGS) | $(CC) -o $@ $(CFLAGS) && printf '\t.align 2, 0 @ dont insert nops\n' >> $@
124+
build/%.o: %.c
125+
$(MSG) CC build/$*.s
126+
$Q$(PREPROC) $< | $(CPP) $(CPPFLAGS) | $(CC) -o build/$*.s $(CFLAGS) && printf $(NOMORENOPS) >> build/$*.s
127+
$(MSG) AS $@
128+
$Q$(AS) $(ASFLAGS) build/$*.s -o $@
127129

128-
src/sram/%.s: CFLAGS = -O1 -mthumb-interwork -fhex-asm
129-
src/sram/%.s: src/sram/%.c
130+
build/src/sram/%.o: CFLAGS = -O1 -mthumb-interwork -fhex-asm
131+
build/src/sram/%.o: src/sram/%.c
130132

131-
src/libgcc/%.s: CFLAGS = -O2 -fhex-asm
132-
src/libgcc/%.s: src/libgcc/%.c
133+
build/src/libgcc/%.o: CFLAGS = -O2 -fhex-asm
134+
build/src/libgcc/%.o: src/libgcc/%.c
133135

134-
src/sprites_AI/%.s: CFLAGS = -O2 -mthumb-interwork -fhex-asm
135-
src/sprites_AI/%.s: src/sram/%.c
136+
build/src/data/%.o: NOMORENOPS = '\n\t.align 2, 0 @ dont insert nops\n'
137+
build/src/data/%.o: CFLAGS =
136138

137139
tools/%: tools/%.c
138140
$(MSG) HOSTCC $@

asm/disasm_0x08000c28.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,7 +1752,7 @@ _08001914:
17521752
bne _08001938
17531753
ldrh r0, [r5, #0x20]
17541754
ldrb r1, [r5, #0x1f]
1755-
bl PlayMusic
1755+
bl MusicPlay
17561756
strb r4, [r5, #0x1c]
17571757
movs r0, #0
17581758
strh r7, [r5, #0x20]
@@ -5625,8 +5625,8 @@ _0800352C: .4byte gMusicInfo
56255625
_08003530: .4byte sMusicTrackDataRom
56265626
_08003534: .4byte sSoundDataEntries
56275627

5628-
thumb_func_start PlayMusic
5629-
PlayMusic: @ 0x08003538
5628+
thumb_func_start MusicPlay
5629+
MusicPlay: @ 0x08003538
56305630
push {r4, r5, r6, r7, lr}
56315631
lsls r0, r0, #0x10
56325632
lsrs r5, r0, #0x10
@@ -5901,7 +5901,7 @@ unk_372c: @ 0x0800372C
59015901
bne _08003748
59025902
adds r0, r1, #0
59035903
adds r1, r2, #0
5904-
bl PlayMusic
5904+
bl MusicPlay
59055905
b _0800376E
59065906
_08003748:
59075907
ldr r0, _08003758 @ =gMusicInfo
@@ -6092,8 +6092,8 @@ _0800389C:
60926092
.align 2, 0
60936093
_080038A4: .4byte gMusicInfo
60946094

6095-
thumb_func_start unk_38a8
6096-
unk_38a8: @ 0x080038A8
6095+
thumb_func_start MusicPlay_38a8
6096+
MusicPlay_38a8: @ 0x080038A8
60976097
push {r4, r5, r6, r7, lr}
60986098
mov r7, sl
60996099
mov r6, sb
@@ -6521,7 +6521,7 @@ unk_3bd4: @ 0x08003BD4
65216521
bne _08003C10
65226522
adds r0, r2, #0
65236523
movs r1, #1
6524-
bl PlayMusic
6524+
bl MusicPlay
65256525
b _08003C10
65266526
_08003BF2:
65276527
cmp r1, #0

asm/disasm_0x080157cc.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5788,7 +5788,7 @@ _080184BA:
57885788
beq _080184D4
57895789
movs r0, #0x17
57905790
movs r1, #9
5791-
bl PlayMusic
5791+
bl MusicPlay
57925792
_080184D4:
57935793
pop {r4}
57945794
pop {r0}
@@ -7073,7 +7073,7 @@ _08018F2E:
70737073
beq _08018F48
70747074
movs r0, #0x17
70757075
movs r1, #9
7076-
bl PlayMusic
7076+
bl MusicPlay
70777077
_08018F48:
70787078
pop {r0}
70797079
bx r0
@@ -8666,7 +8666,7 @@ _08019C02:
86668666
beq _08019C1E
86678667
movs r0, #0x17
86688668
movs r1, #9
8669-
bl PlayMusic
8669+
bl MusicPlay
86708670
_08019C1E:
86718671
pop {r0}
86728672
bx r0
@@ -10304,7 +10304,7 @@ _0801A8E0:
1030410304
strh r0, [r2]
1030510305
movs r0, #0x51
1030610306
movs r1, #7
10307-
bl PlayMusic
10307+
bl MusicPlay
1030810308
_0801A908:
1030910309
pop {r4, r5}
1031010310
pop {r0}
@@ -14174,7 +14174,7 @@ _0801C8AE:
1417414174
beq _0801C8CA
1417514175
movs r0, #0x17
1417614176
movs r1, #9
14177-
bl PlayMusic
14177+
bl MusicPlay
1417814178
_0801C8CA:
1417914179
pop {r0}
1418014180
bx r0

asm/disasm_0x080626f4.s

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2405,7 +2405,7 @@ _08063A32:
24052405
_08063A3C:
24062406
movs r0, #0x6b
24072407
movs r1, #0xb
2408-
bl SetSubEventAndUpdateMusic
2408+
bl SubEventUpdate
24092409
ldr r0, _08063A54 @ =0x03004FC8
24102410
ldr r1, _08063A58 @ =gCurrentRoomEntry
24112411
ldrb r1, [r1, #0x1b]
@@ -2423,7 +2423,7 @@ _08063A5C:
24232423
bne _08063A76
24242424
movs r0, #0x14
24252425
movs r1, #0xb
2426-
bl SetSubEventAndUpdateMusic
2426+
bl SubEventUpdate
24272427
movs r0, #0x1e
24282428
movs r1, #1
24292429
bl ScreenShakeStartHorizontal
@@ -2441,7 +2441,7 @@ _08063A7C:
24412441
_08063A84:
24422442
movs r0, #0x15
24432443
movs r1, #0xb
2444-
bl SetSubEventAndUpdateMusic
2444+
bl SubEventUpdate
24452445
movs r6, #2
24462446
b _08063C2E
24472447
_08063A90:
@@ -2500,7 +2500,7 @@ _08063ADC:
25002500
movs r0, #0x5f
25012501
_08063AF2:
25022502
movs r1, #0xb
2503-
bl SetSubEventAndUpdateMusic
2503+
bl SubEventUpdate
25042504
movs r6, #1
25052505
b _08063C2E
25062506
.align 2, 0
@@ -2562,7 +2562,7 @@ _08063B5E:
25622562
bne _08063AD4
25632563
movs r0, #0x64
25642564
movs r1, #0xb
2565-
bl SetSubEventAndUpdateMusic
2565+
bl SubEventUpdate
25662566
b _08063AD4
25672567
.align 2, 0
25682568
_08063B70: .4byte gSubEventCounter
@@ -2847,7 +2847,7 @@ _08063D8C:
28472847
beq _08063DDA
28482848
_08063D90:
28492849
movs r1, #1
2850-
ldr r0, _08063DE4 @ =0x03000014
2850+
ldr r0, _08063DE4 @ =gGameCompletion
28512851
ldrb r0, [r0]
28522852
lsls r0, r0, #0x18
28532853
asrs r0, r0, #0x18
@@ -2889,7 +2889,7 @@ _08063DDA:
28892889
pop {r1}
28902890
bx r1
28912891
.align 2, 0
2892-
_08063DE4: .4byte 0x03000014
2892+
_08063DE4: .4byte gGameCompletion
28932893

28942894
thumb_func_start CheckLockHatchesWithTimer
28952895
CheckLockHatchesWithTimer: @ 0x08063DE8
@@ -3795,7 +3795,7 @@ _080644E2:
37953795
beq _08064540
37963796
movs r0, #0x9a
37973797
movs r1, #0xb
3798-
bl SetSubEventAndUpdateMusic
3798+
bl SubEventUpdate
37993799
ldrh r0, [r4]
38003800
adds r0, #1
38013801
strh r0, [r4]
@@ -6298,7 +6298,7 @@ _08065992:
62986298
thumb_func_start unk_659a0
62996299
unk_659a0: @ 0x080659A0
63006300
push {lr}
6301-
ldr r0, _080659D4 @ =0x03000018
6301+
ldr r0, _080659D4 @ =gMonochromeBgFading
63026302
ldrb r0, [r0]
63036303
cmp r0, #0
63046304
beq _080659AE
@@ -6322,7 +6322,7 @@ _080659CE:
63226322
pop {r0}
63236323
bx r0
63246324
.align 2, 0
6325-
_080659D4: .4byte 0x03000018
6325+
_080659D4: .4byte gMonochromeBgFading
63266326
_080659D8: .4byte 0x03004E44
63276327
_080659DC: .4byte gElevatorDirection
63286328

@@ -6343,14 +6343,14 @@ unk_659e4: @ 0x080659E4
63436343
cmp r0, #1
63446344
bne _08065A08
63456345
movs r0, #0x42
6346-
bl CheckUpdateSubEventAndMusic
6346+
bl SubEventUpdateMusic
63476347
b _08065A0E
63486348
.align 2, 0
63496349
_08065A00: .4byte gSamusData
63506350
_08065A04: .4byte gElevatorDirection
63516351
_08065A08:
63526352
movs r0, #0x43
6353-
bl CheckUpdateSubEventAndMusic
6353+
bl SubEventUpdateMusic
63546354
_08065A0E:
63556355
ldr r1, _08065A18 @ =gElevatorDirection
63566356
movs r0, #0

0 commit comments

Comments
 (0)