Dump Gb Player screen data

This commit is contained in:
Marcus Huderle 2025-05-31 12:13:15 -05:00
parent 589b962b68
commit ecb5f9f0b8
10 changed files with 44 additions and 23 deletions

View File

@ -9,7 +9,7 @@ gUnknown_08055A68:: @ 0x08055A68
.include "data/mon_locations.inc"
gUnknown_08055C44:: @ 0x08055C44
gSineTable:: @ 0x08055C44
.2byte 0x0000, 0x0007, 0x000F, 0x0017, 0x001E, 0x0026, 0x002E, 0x0035
.2byte 0x003D, 0x0045, 0x004C, 0x0054, 0x005C, 0x0063, 0x006B, 0x0073
.2byte 0x007A, 0x0082, 0x008A, 0x0091, 0x0099, 0x00A1, 0x00A8, 0x00B0
@ -655,17 +655,20 @@ gEmptyOamData:: @ 0x08057C46
.4byte 0x00F000F4, 0x00000000
.align 2, 0
gUnknown_08058048:: @ 0x08058058
.incbin "baserom.gba", 0x58048, 0x200
gGbPlayerPalettes:: @ 0x08058058
@ This one is weird because some of the colors set the unused bit, so we can't do a matching conversion
@ from a JASC palette format. Naming it with a ".bin" suffix to prevent `make clean` from deleting it.
.incbin "graphics/gb_player/gb_player.gbapal.bin"
gUnknown_08058248:: @ 0x08058248
.incbin "baserom.gba", 0x58248, 0x4000
gGbPlayerGfx:: @ 0x08058248
.incbin "graphics/gb_player/gb_player.8bpp"
gUnknown_0805C248:: @ 0x0805C248
.incbin "baserom.gba", 0x5C248, 0x500
gGbPlayerTilemap:: @ 0x0805C248
.incbin "graphics/gb_player/gb_player_tilemap.bin"
gUnknown_0805C748:: @ 0x0805C748
.incbin "baserom.gba", 0x5C748, 0x8
Sio32ConnectionData:: @ 0x0805C748
@ NINTENDO
.2byte 0x494E, 0x544E, 0x4E45, 0x4F44
gBonusFieldSelectStateFuncs:: @ 0x0805C750
.4byte LoadBonusFieldSelectGraphics

18
extract.py Normal file
View File

@ -0,0 +1,18 @@
import sys
def extract_bytes(input_file, output_file, start, length):
with open(input_file, 'rb') as f:
f.seek(start)
data = f.read(length)
with open(output_file, 'wb') as f:
f.write(data)
if __name__ == "__main__":
if len(sys.argv) != 5:
print(f"Usage: {sys.argv[0]} <input_file> <output_file> <start> <length>")
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2]
start = int(sys.argv[3], 0)
length = int(sys.argv[4], 0)
extract_bytes(input_file, output_file, start, length)

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

View File

@ -105,7 +105,7 @@ extern int gUnknown_02019C04;
extern int gUnknown_02019C08;
extern int gGameBoyPlayerEnabled;
extern u8 gUnknown_02019C10;
extern u8 gUnknown_02002008[];
extern u8 gGbPlayerTilemapBuffer[];
#define INTR_COUNT 14
extern IntrFunc gIntrTable[14];
extern void (*gMainCallback)(void);

View File

@ -98,11 +98,11 @@ extern s16 gUnknown_0202BEEC;
//extern ? gMPlayInfo_BGM;
//extern ? gMPlayMemAccArea;
extern const u16 gWildMonLocations[AREA_COUNT][2][WILD_MON_LOCATION_COUNT];
extern const s16 gUnknown_08055C44[];
extern const s16 gSineTable[];
extern const struct OamData gEmptyOamData[128];
extern const u8 gUnknown_08058048[];
extern const u8 gUnknown_08058248[];
extern const u8 gUnknown_0805C248[];
extern const u8 gGbPlayerPalettes[];
extern const u8 gGbPlayerGfx[];
extern const u8 gGbPlayerTilemap[];
extern StateFunc gTitlescreenStateFuncs[];
//extern ? gIntroCopyright_Gfx;
//extern ? gIntroCopyright_Pal;
@ -393,7 +393,7 @@ extern u8 gUnknown_08118680[];
extern u16 gCommonAndEggWeights[];
extern u16 gUnknown_0200B18E[10];
extern u16 gUnknown_0805C748[4];
extern u16 Sio32ConnectionData[4];
extern u32 gUnknown_02002814;
#endif // GUARD_VARIABLES_H

View File

@ -25,10 +25,10 @@ static u8 CheckGameBoyPlayer(void)
lastDetectedFrame = 0;
prevDetectedFrame = 0;
VBlankIntrWait();
DmaCopy16(3, gUnknown_08058248, (void *)BG_CHAR_ADDR(2), BG_CHAR_SIZE);
DmaCopy16(3, gUnknown_08058048, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gUnknown_0805C248, gUnknown_02002008, 0x500);
DmaCopy16(3, gUnknown_02002008, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gGbPlayerGfx, (void *)BG_CHAR_ADDR(2), BG_CHAR_SIZE);
DmaCopy16(3, gGbPlayerPalettes, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gGbPlayerTilemap, gGbPlayerTilemapBuffer, 0x500);
DmaCopy16(3, gGbPlayerTilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
REG_BG0CNT = BGCNT_256COLOR | BGCNT_CHARBASE(2);
for (i = 0; i <= 16; i++)
{
@ -61,7 +61,7 @@ static u8 CheckGameBoyPlayer(void)
VBlankIntrWait();
{
vu32 *dmaRegs = dma3;
dmaRegs[0] = (vu32)gUnknown_02002008;
dmaRegs[0] = (vu32)gGbPlayerTilemapBuffer;
dmaRegs[1] = BG_SCREEN_ADDR(0);
dmaRegs[2] = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 | (BG_SCREEN_SIZE / sizeof(u32)));
dmaRegs[2];
@ -333,7 +333,7 @@ void Sio32IDIntr(void)
// green
if (gUnknown_02002808.count < 4)
{
gUnknown_02002808.send_id = *(gUnknown_02002808.count + gUnknown_0805C748); // oh no
gUnknown_02002808.send_id = *(gUnknown_02002808.count + Sio32ConnectionData); // oh no
}
else
{

View File

@ -195,7 +195,7 @@ s16 Sin(u16 arg0)
if (index > 0xFFF)
index = 0x2000 - index;
return gUnknown_08055C44[index] * var0;
return gSineTable[index] * var0;
}
s16 Cos(u16 arg0)

View File

@ -4,7 +4,7 @@ sGbPlayerCurKeys: @ 0x2002000
.space 0x2
sGbPlayerPrevKeys: @ 0x2002002
.space 0x6
gUnknown_02002008: @ 0x2002008
gGbPlayerTilemapBuffer: @ 0x2002008
.space 0x800
gUnknown_02002808: @ 0x2002808
.space 0xC