mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
extract collect rings rom code
This commit is contained in:
1 parent
c0fb4214ca
commit
bc4de8d98c
8 files changed
+61
-25
No files matched your search
@@ -199,10 +199,15 @@ include graphics.mk
|
||||
%.8bpp: %.png ; $(GFX) $< $@
|
||||
%.gbapal: %.pal ; $(GFX) $< $@
|
||||
%.gbapal: %.png ; $(GFX) $< $@
|
||||
%.gba.lz: %.gba
|
||||
|
||||
chao_garden/mb_chao_garden.gba.lz: chao_garden/mb_chao_garden.gba
|
||||
$(GFX) $< $@ -search 1
|
||||
|
||||
%.gba.lz: %.gba
|
||||
$(GFX) $< $@
|
||||
%.bin.lz: %.bin
|
||||
$(GFX) $< $@
|
||||
|
||||
%.lz: % ; $(GFX) $< $@
|
||||
%.rl: % ; $(GFX) $< $@
|
||||
|
||||
|
||||
+4
-10
@@ -34,16 +34,10 @@ gUnknown_08CAD1DC:
|
||||
gUnknown_08CB41C0:
|
||||
.incbin "baserom.gba", 0x00CB41C0, 0x6a44
|
||||
|
||||
// TODO: extract this rom
|
||||
.global gUnknown_08CBAC04
|
||||
gUnknown_08CBAC04:
|
||||
.incbin "baserom.gba", 0x00CBAC04, 0x8000
|
||||
.incbin "multi_boot/collect_rings/mb_collect_rings.gba.lz"
|
||||
|
||||
.global gUnknown_08CC2C04
|
||||
gUnknown_08CC2C04:
|
||||
.incbin "baserom.gba", 0x00CC2C04, 0x8000
|
||||
|
||||
|
||||
.global gUnknown_08CCAC04
|
||||
gUnknown_08CCAC04:
|
||||
.incbin "baserom.gba", 0x00CCAC04, 0x8900
|
||||
.global gUnknown_08CD0728
|
||||
gUnknown_08CD0728:
|
||||
.incbin "baserom.gba", 0x00CD0728, 0x2DDC
|
||||
+5
-3
@@ -489,13 +489,15 @@ extern const u16 sAnimsGotThroughZoneAndActNames[11][3];
|
||||
// collect rings data
|
||||
extern const u8 gUnknown_08C88408[0x8000];
|
||||
extern const u8 gUnknown_08C90408[0x8000];
|
||||
|
||||
// Backgrounds?
|
||||
extern const u8 gUnknown_08C92208[0x8000];
|
||||
|
||||
extern const u8 gUnknown_08CA6760[0x6A7C];
|
||||
extern const u8 gUnknown_08CAD1DC[0x6fe4];
|
||||
extern const u8 gUnknown_08CB41C0[0x6a44];
|
||||
extern const u8 gUnknown_08CBAC04[0x8000];
|
||||
extern const u8 gUnknown_08CC2C04[0x8000];
|
||||
extern const u8 gUnknown_08CCAC04[0x8900];
|
||||
|
||||
extern const u8 gUnknown_08CBAC04[];
|
||||
|
||||
// Possibly CreateGameStageAtSelectedCourse
|
||||
void GameStageStart(void);
|
||||
|
||||
Binary file not shown.
@@ -1,10 +1,16 @@
|
||||
#include "global.h"
|
||||
#include "loader_tables.h"
|
||||
|
||||
#define UNKNOWN_BUF_1 ((void *)EWRAM_START + 0x28000)
|
||||
#define UNKNOWN_BUF_2 ((void *)EWRAM_START + 0x30000)
|
||||
|
||||
void *const gUnknown_0203C280[] = {
|
||||
PROGRAM_WORK_BUFFER, UNKNOWN_BUF_1, UNKNOWN_BUF_2, PROGRAM_WORK_BUFFER, RECV_BUFFER,
|
||||
RECV_BUFFER, RECV_BUFFER, RECV_BUFFER, RECV_BUFFER,
|
||||
PROGRAM_WORK_BUFFER,
|
||||
PROGRAM_WORK_BUFFER + 0x8000,
|
||||
PROGRAM_WORK_BUFFER + 0x10000,
|
||||
|
||||
PROGRAM_WORK_BUFFER,
|
||||
RECV_BUFFER,
|
||||
RECV_BUFFER,
|
||||
|
||||
RECV_BUFFER,
|
||||
RECV_BUFFER,
|
||||
RECV_BUFFER,
|
||||
};
|
||||
@@ -129,8 +129,8 @@ static u16 sub_0203b2f0(u16 state, Loader *loader)
|
||||
LZ77UnCompWram(PROGRAM_WORK_BUFFER, (void *)EWRAM_START);
|
||||
break;
|
||||
case 3:
|
||||
// When VRAM data received, copy into vram
|
||||
CpuCopy16(PROGRAM_WORK_BUFFER, (void *)VRAM, 0x8000);
|
||||
// When backgrounds received, copy into BG VRAM
|
||||
CpuCopy16(PROGRAM_WORK_BUFFER, (void *)BG_VRAM, 0x8000);
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
import subprocess
|
||||
|
||||
size = 0x15b20
|
||||
|
||||
while True:
|
||||
size += 1
|
||||
print(hex(size))
|
||||
try:
|
||||
subprocess.check_output(f"python3 scripts/extract_bin.py 0x00CBAC04 {hex(size)} && mv 8CBAC04.bin 8CBAC04.bin.lz && ./tools/gbagfx/gbagfx 8CBAC04.bin.lz 8CBAC04.gba", shell=True, )
|
||||
except subprocess.CalledProcessError as err:
|
||||
continue
|
||||
|
||||
expected_hash = subprocess.check_output("sha1sum 8CBAC04.bin.lz", shell=True).decode().split(" ")[0]
|
||||
|
||||
subprocess.check_output("./tools/gbagfx/gbagfx 8CBAC04.gba 8CBAC04-new.bin.lz -search 2", shell=True)
|
||||
new_hash = subprocess.check_output("sha1sum 8CBAC04-new.bin.lz", shell=True).decode().split(" ")[0]
|
||||
print(expected_hash, new_hash)
|
||||
|
||||
if new_hash == expected_hash:
|
||||
print(hex(size) + " works")
|
||||
|
||||
print(hex(size))
|
||||
@@ -42,9 +42,15 @@ struct SinglePakConnectScreen {
|
||||
#define MB_SUBGAME_LOADER_SIZE 0x314C
|
||||
|
||||
void *const gUnknown_080E0168[9] = {
|
||||
&gUnknown_08CBAC04, &gUnknown_08CC2C04, &gUnknown_08CCAC04,
|
||||
&gUnknown_08C92208, &gUnknown_08CA6760, &gUnknown_08CAD1DC,
|
||||
&gUnknown_08CB41C0, &gUnknown_08C90408, &gUnknown_08C88408,
|
||||
(void *)gUnknown_08CBAC04 + SIO32ML_BLOCK_SIZE * 0,
|
||||
(void *)gUnknown_08CBAC04 + SIO32ML_BLOCK_SIZE * 1,
|
||||
(void *)gUnknown_08CBAC04 + SIO32ML_BLOCK_SIZE * 2,
|
||||
&gUnknown_08C92208,
|
||||
&gUnknown_08CA6760,
|
||||
&gUnknown_08CAD1DC,
|
||||
&gUnknown_08CB41C0,
|
||||
&gUnknown_08C90408,
|
||||
&gUnknown_08C88408,
|
||||
};
|
||||
|
||||
static const u16 gUnknown_080E018C[7][3] = {
|
||||
@@ -540,12 +546,13 @@ void sub_8081CC4(void)
|
||||
sub_80818B8();
|
||||
}
|
||||
|
||||
// Send next segment
|
||||
void sub_8081D04(void)
|
||||
{
|
||||
struct SinglePakConnectScreen *connectScreen = TaskGetStructPtr(gCurTask);
|
||||
MultiSioStop();
|
||||
gIntrTable[0] = Sio32MultiLoadIntr;
|
||||
Sio32MultiLoadInit(gMultiSioStatusFlags & 0x80,
|
||||
Sio32MultiLoadInit(gMultiSioStatusFlags & MULTI_SIO_PARENT,
|
||||
gUnknown_080E0168[connectScreen->unkF9]);
|
||||
gCurTask->main = sub_8081A5C;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user