diff options
author | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2021-05-17 16:29:51 +0700 |
---|---|---|
committer | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2021-05-17 18:09:08 +0700 |
commit | d1c06357bd57ae586b79babce6006cd7dfce3651 (patch) | |
tree | 063d7756e5bcea1d8c4e04b1d2491e3491cb7dc8 | |
parent | 754d9064c977f117d57030978f61178f5f5644f6 (diff) |
Identify SGB functions, properly rip SGB border
-rwxr-xr-x | engine/dumps/bank01.asm | 4 | ||||
-rwxr-xr-x | engine/dumps/bank02.asm | 307 | ||||
-rw-r--r-- | gfx/gfx.asm | 10 | ||||
-rw-r--r-- | gfx/gfx.mk | 3 | ||||
-rw-r--r-- | gfx/sgb/sgb_border.bin | bin | 0 -> 1792 bytes | |||
-rw-r--r-- | gfx/sgb/sgb_border_alt.bin | bin | 0 -> 1792 bytes | |||
-rw-r--r-- | slack/corrupted_9e1c.png | bin | 1661 -> 0 bytes | |||
-rw-r--r-- | slack/corrupted_a66c.png | bin | 1230 -> 0 bytes | |||
-rw-r--r-- | slack/slack.mk | 2 | ||||
-rw-r--r-- | slack/unknown_a24c.bin | bin | 0 -> 128 bytes | |||
-rw-r--r-- | slack/unknown_aa9c.bin | bin | 0 -> 128 bytes |
11 files changed, 166 insertions, 160 deletions
diff --git a/engine/dumps/bank01.asm b/engine/dumps/bank01.asm index 01f36da..03c93ba 100755 --- a/engine/dumps/bank01.asm +++ b/engine/dumps/bank01.asm @@ -3741,9 +3741,7 @@ Function78f0: ld a, [hl] xor $08 ld [hl], a - ld hl, Function96eb - ld a, BANK(Function96eb) - call FarCall_hl + callab UpdateSGBBorder call LoadFont call LoadFontExtra ld c, $70 diff --git a/engine/dumps/bank02.asm b/engine/dumps/bank02.asm index 38042a4..c60c8e0 100755 --- a/engine/dumps/bank02.asm +++ b/engine/dumps/bank02.asm @@ -1684,9 +1684,9 @@ Data954f: Function955f: push de - call Function964b + call PushSGBPals pop hl - jp Function964b + jp PushSGBPals Function9567: bit 3, a @@ -1829,72 +1829,72 @@ Function9604: LoadMagikarpPalettes_Intro: ld hl, Data997c - jp Function964b + jp PushSGBPals LoadForestPalettes2_Intro: ld hl, Data986c - jp Function964b + jp PushSGBPals LoadVenusaurPalettes_Intro: ld hl, Data99ac - jp Function964b + jp PushSGBPals LoadCharizardPalettes_Intro: ld hl, Data99bc - jp Function964b + jp PushSGBPals Function9645: ld hl, wc51a - jp Function964b + jp PushSGBPals -Function964b: +PushSGBPals: ld a, [wJoypadFlags] push af set 7, a ld [wJoypadFlags], a - call Function965c + call _PushSGBPals pop af ld [wJoypadFlags], a ret -Function965c: +_PushSGBPals: ld a, [hl] - and $07 + and $7 ret z ld b, a -.sub_9661 +.loop push bc xor a ldh [rJOYP], a ld a, $30 ldh [rJOYP], a ld b, $10 -.sub_966b +.loop2 ld e, $08 ld a, [hli] ld d, a -.sub_966f +.loop3 bit 0, d ld a, $10 - jr nz, .sub_9677 + jr nz, .ok ld a, $20 -.sub_9677 +.ok ldh [rJOYP], a ld a, $30 ldh [rJOYP], a rr d dec e - jr nz, .sub_966f + jr nz, .loop3 dec b - jr nz, .sub_966b + jr nz, .loop2 ld a, $20 ldh [rJOYP], a ld a, $30 ldh [rJOYP], a - call Function9860 + call SGBDelayCycles pop bc dec b - jr nz, .sub_9661 + jr nz, .loop ret CheckSGB: @@ -1902,239 +1902,244 @@ CheckSGB: push af set 7, a ld [wJoypadFlags], a + xor a ldh [rJOYP], a ld [wSGB], a - call Function9730 - jr nc, .sub_96c0 - ld a, $01 + call PushSGBBorderPalsAndWait + jr nc, .skip + ld a, 1 ld [wSGB], a - call .sub_96c5 - call Function9704 - call Function979a - call Function9725 - ld hl, Data9abc - call Function965c -.sub_96c0 + call _InitSGBBorderPals + call PushSGBBorder + call SGBBorder_PushBGPals + call SGB_ClearVRAM + ld hl, MaskEnCancelPacket + call _PushSGBPals +.skip pop af ld [wJoypadFlags], a ret -.sub_96c5 - ld hl, Table96d9 - ld c, $09 -.sub_96ca + +_InitSGBBorderPals: + ld hl, .PacketPointerTable + ld c, 9 + +.loop push bc ld a, [hli] push hl ld h, [hl] ld l, a - call Function965c + call _PushSGBPals pop hl inc hl pop bc dec c - jr nz, .sub_96ca + jr nz, .loop ret -Table96d9: - dw Data9aac - dw Data9acc - dw Data9adc - dw Data9aec - dw Data9afc - dw Data9b0c - dw Data9b1c - dw Data9b2c - dw Data9b3c +.PacketPointerTable: + dw MaskEnFreezePacket + dw DataSndPacket1 + dw DataSndPacket2 + dw DataSndPacket3 + dw DataSndPacket4 + dw DataSndPacket5 + dw DataSndPacket6 + dw DataSndPacket7 + dw DataSndPacket8 -Function96eb: +UpdateSGBBorder: ld a, [wSGB] ret z di xor a ldh [rJOYP], a - ld hl, Data9aac - call Function965c - call Function9704 - ld hl, Data9abc - call Function965c + ld hl, MaskEnFreezePacket + call _PushSGBPals + call PushSGBBorder + ld hl, MaskEnCancelPacket + call _PushSGBPals ei ret -Function9704: - call Function9710 +PushSGBBorder: + call .LoadSGBBorderPointers push de - call Function980a + call SGBBorder_YetMorePalPushing pop hl - call Function97be + call SGBBorder_MorePalPushing ret -Function9710: +.LoadSGBBorderPointers: ld a, [wce5f] bit 3, a - jr nz, .sub_971e + jr nz, .spaceworld_border + +; load alternate border ld hl, UnusedSGBBorderGFX - ld de, Corrupted9e1cGFX + ld de, UnusedSGBBorderTilemap ret -.sub_971e + +.spaceworld_border ld hl, SGBBorderGFX - ld de, Corrupteda66cGFX + ld de, SGBBorderTilemap ret -Function9725: +SGB_ClearVRAM: ld hl, vChars0 ld bc, $2000 xor a call ByteFill ret -Function9730: - ld hl, Data9a7c - call Function965c - call Function9860 +PushSGBBorderPalsAndWait: + ld hl, MltReq2Packet + call _PushSGBPals + call SGBDelayCycles ldh a, [rJOYP] - and $03 - cp $03 - jr nz, .sub_978c + and $3 + cp $3 + jr nz, .carry ld a, $20 ldh [rJOYP], a ldh a, [rJOYP] ldh a, [rJOYP] - call Function9860 - call Function9860 + call SGBDelayCycles + call SGBDelayCycles ld a, $30 ldh [rJOYP], a - call Function9860 - call Function9860 + call SGBDelayCycles + call SGBDelayCycles ld a, $10 ldh [rJOYP], a +rept 6 ldh a, [rJOYP] - ldh a, [rJOYP] - ldh a, [rJOYP] - ldh a, [rJOYP] - ldh a, [rJOYP] - ldh a, [rJOYP] - call Function9860 - call Function9860 +endr + call SGBDelayCycles + call SGBDelayCycles ld a, $30 ldh [rJOYP], a ldh a, [rJOYP] ldh a, [rJOYP] ldh a, [rJOYP] - call Function9860 - call Function9860 + call SGBDelayCycles + call SGBDelayCycles ldh a, [rJOYP] - and $03 - cp $03 - jr nz, .sub_978c - call .sub_9791 + and $3 + cp $3 + jr nz, .carry + call .FinalPush and a ret -.sub_978c - call .sub_9791 + +.carry + call .FinalPush scf ret -.sub_9791 - ld hl, Data9a6c - call Function965c - jp Function9860 -Function979a: +.FinalPush: + ld hl, MltReq1Packet + call _PushSGBPals + jp SGBDelayCycles + +SGBBorder_PushBGPals: call DisableLCD - ld a, $e4 + ld a, %11100100 ldh [rBGP], a ld hl, SuperPalettes ld de, vChars1 ld bc, $1000 - call Function9838 - call Function984a + call CopyData + call DrawDefaultTiles ld a, $e3 ldh [rLCDC], a - ld hl, Data9a5c - call Function965c + ld hl, PalTrnPacket + call _PushSGBPals xor a ldh [rBGP], a ret -Function97be: +SGBBorder_MorePalPushing: call DisableLCD - ld a, $e4 + ld a, %11100100 ldh [rBGP], a ld de, vChars1 - ld bc, $0140 - call Function9838 - ld b, $12 -.sub_97d0 + ld bc, (6 + SCREEN_WIDTH + 6) * 5 * 2 + call CopyData + ld b, SCREEN_HEIGHT +.loop push bc - ld bc, $000c - call Function9838 - ld bc, $0028 - call Function9841 - ld bc, $000c - call Function9838 + ld bc, 6 * 2 + call CopyData + ld bc, SCREEN_WIDTH * 2 + call ClearBytes + ld bc, 6 * 2 + call CopyData pop bc dec b - jr nz, .sub_97d0 - ld bc, $0140 - call Function9838 - ld bc, $0100 - call Function9841 - ld bc, $0080 - call Function9838 - call Function984a + jr nz, .loop + ld bc, (6 + SCREEN_WIDTH + 6) * 5 * 2 + call CopyData + ld bc, $100 + call ClearBytes + ld bc, $80 + call CopyData + call DrawDefaultTiles ld a, $e3 ldh [rLCDC], a - ld hl, Data9a9c - call Function965c + ld hl, PctTrnPacket + call _PushSGBPals xor a ldh [rBGP], a ret -Function980a: +SGBBorder_YetMorePalPushing: call DisableLCD ld a, $e4 ldh [rBGP], a ld de, vChars1 ld b, $80 -.sub_9816 +.loop push bc - ld bc, $0010 - call Function9838 - ld bc, $0010 - call Function9841 + ld bc, $10 + call CopyData + ld bc, $10 + call ClearBytes pop bc dec b - jr nz, .sub_9816 - call Function984a + jr nz, .loop + call DrawDefaultTiles ld a, $e3 ldh [rLCDC], a - ld hl, Data9a8c - call Function965c + ld hl, ChrTrnPacket + call _PushSGBPals xor a ldh [rBGP], a ret -Function9838: +CopyData: ld a, [hli] ld [de], a inc de dec bc ld a, c or b - jr nz, Function9838 + jr nz, CopyData ret -Function9841: +ClearBytes: xor a ld [de], a inc de dec bc ld a, c or b - jr nz, Function9841 + jr nz, ClearBytes ret -Function984a: +DrawDefaultTiles: ld hl, vBGMap0 ld de, $000c ld a, $80 @@ -2151,7 +2156,7 @@ Function984a: jr nz, .sub_9854 ret -Function9860: +SGBDelayCycles: ld de, $1b58 .sub_9863 nop @@ -2287,62 +2292,62 @@ Data9a4c: db $51, $29, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a5c: +PalTrnPacket: db $59, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a6c: +MltReq1Packet: db $89, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a7c: +MltReq2Packet: db $89, $01, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a8c: +ChrTrnPacket: db $99, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a9c: +PctTrnPacket: db $a1, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9aac: +MaskEnFreezePacket: db $b9, $01, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9abc: +MaskEnCancelPacket: db $b9, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9acc: +DataSndPacket1: db $79, $5d, $08, $00, $0b, $8c, $d0, $f4 db $60, $00, $00, $00, $00, $00, $00, $00 -Data9adc: +DataSndPacket2: db $79, $52, $08, $00, $0b, $a9, $e7, $9f db $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0 -Data9aec: +DataSndPacket3: db $79, $47, $08, $00, $0b, $c4, $d0, $16 db $a5, $cb, $c9, $05, $d0, $10, $a2, $28 -Data9afc: +DataSndPacket4: db $79, $3c, $08, $00, $0b, $f0, $12, $a5 db $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9 -Data9b0c: +DataSndPacket5: db $79, $31, $08, $00, $0b, $0c, $a5, $ca db $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e -Data9b1c: +DataSndPacket6: db $79, $26, $08, $00, $0b, $39, $cd, $48 db $0c, $d0, $34, $a5, $c9, $c9, $80, $d0 -Data9b2c: +DataSndPacket7: db $79, $1b, $08, $00, $0b, $ea, $ea, $ea db $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0 -Data9b3c: +DataSndPacket8: db $79, $10, $08, $00, $0b, $4c, $20, $08 db $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea diff --git a/gfx/gfx.asm b/gfx/gfx.asm index 6af0a86..4fa2472 100644 --- a/gfx/gfx.asm +++ b/gfx/gfx.asm @@ -35,14 +35,16 @@ SECTION "gfx.asm@SGB GFX", ROMX INCLUDE "data/pokemon/palettes.inc" INCLUDE "data/super_palettes.inc" -Corrupted9e1cGFX: -INCBIN "slack/corrupted_9e1c.2bpp" +UnusedSGBBorderTilemap: +INCBIN "gfx/sgb/sgb_border_alt.sgb.tilemap" +INCBIN "slack/unknown_a24c.bin" UnusedSGBBorderGFX:: INCBIN "gfx/sgb/sgb_border_alt.2bpp" -Corrupteda66cGFX: -INCBIN "slack/corrupted_a66c.2bpp" +SGBBorderTilemap: +INCBIN "gfx/sgb/sgb_border.sgb.tilemap" +INCBIN "slack/unknown_aa9c.bin" SGBBorderGFX:: if DEF(GOLD) @@ -29,3 +29,6 @@ $(BUILD)/gfx/minigames/%.bin: gfx/minigames/%.bin $(BUILD)/gfx/battle_anims/attack_animations_1.2bpp: tools/gfx += --trim-whitespace $(BUILD)/gfx/battle_anims/attack_animations_2.2bpp: tools/gfx += --trim-whitespace + +$(BUILD)/gfx/sgb/%.sgb.tilemap: gfx/sgb/%.bin + tr < $< -d '\000' > $@ diff --git a/gfx/sgb/sgb_border.bin b/gfx/sgb/sgb_border.bin Binary files differnew file mode 100644 index 0000000..8223c68 --- /dev/null +++ b/gfx/sgb/sgb_border.bin diff --git a/gfx/sgb/sgb_border_alt.bin b/gfx/sgb/sgb_border_alt.bin Binary files differnew file mode 100644 index 0000000..5ad4fb0 --- /dev/null +++ b/gfx/sgb/sgb_border_alt.bin diff --git a/slack/corrupted_9e1c.png b/slack/corrupted_9e1c.png Binary files differdeleted file mode 100644 index f124031..0000000 --- a/slack/corrupted_9e1c.png +++ /dev/null diff --git a/slack/corrupted_a66c.png b/slack/corrupted_a66c.png Binary files differdeleted file mode 100644 index a8bab25..0000000 --- a/slack/corrupted_a66c.png +++ /dev/null diff --git a/slack/slack.mk b/slack/slack.mk index 0a752c7..6cfced8 100644 --- a/slack/slack.mk +++ b/slack/slack.mk @@ -1,4 +1,2 @@ -$(BUILD)/slack/corrupted_9e1c.2bpp: tools/gfx += --trim-whitespace -$(BUILD)/slack/corrupted_a66c.2bpp: tools/gfx += --trim-whitespace $(BUILD)/slack/corrupted_b1e3.2bpp: tools/gfx += --trim-whitespace $(BUILD)/slack/sgb_border_gold_corrupted.2bpp: tools/gfx += --trim-whitespace diff --git a/slack/unknown_a24c.bin b/slack/unknown_a24c.bin Binary files differnew file mode 100644 index 0000000..7b7fd54 --- /dev/null +++ b/slack/unknown_a24c.bin diff --git a/slack/unknown_aa9c.bin b/slack/unknown_aa9c.bin Binary files differnew file mode 100644 index 0000000..9663709 --- /dev/null +++ b/slack/unknown_aa9c.bin |