From d1c06357bd57ae586b79babce6006cd7dfce3651 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 16:29:51 +0700 Subject: Identify SGB functions, properly rip SGB border --- engine/dumps/bank01.asm | 4 +- engine/dumps/bank02.asm | 307 +++++++++++++++++++++++---------------------- gfx/gfx.asm | 10 +- gfx/gfx.mk | 3 + gfx/sgb/sgb_border.bin | Bin 0 -> 1792 bytes gfx/sgb/sgb_border_alt.bin | Bin 0 -> 1792 bytes slack/corrupted_9e1c.png | Bin 1661 -> 0 bytes slack/corrupted_a66c.png | Bin 1230 -> 0 bytes slack/slack.mk | 2 - slack/unknown_a24c.bin | Bin 0 -> 128 bytes slack/unknown_aa9c.bin | Bin 0 -> 128 bytes 11 files changed, 166 insertions(+), 160 deletions(-) create mode 100644 gfx/sgb/sgb_border.bin create mode 100644 gfx/sgb/sgb_border_alt.bin delete mode 100644 slack/corrupted_9e1c.png delete mode 100644 slack/corrupted_a66c.png create mode 100644 slack/unknown_a24c.bin create mode 100644 slack/unknown_aa9c.bin 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) diff --git a/gfx/gfx.mk b/gfx/gfx.mk index afc5d10..555ae2d 100644 --- a/gfx/gfx.mk +++ b/gfx/gfx.mk @@ -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 new file mode 100644 index 0000000..8223c68 Binary files /dev/null and b/gfx/sgb/sgb_border.bin differ diff --git a/gfx/sgb/sgb_border_alt.bin b/gfx/sgb/sgb_border_alt.bin new file mode 100644 index 0000000..5ad4fb0 Binary files /dev/null and b/gfx/sgb/sgb_border_alt.bin differ diff --git a/slack/corrupted_9e1c.png b/slack/corrupted_9e1c.png deleted file mode 100644 index f124031..0000000 Binary files a/slack/corrupted_9e1c.png and /dev/null differ diff --git a/slack/corrupted_a66c.png b/slack/corrupted_a66c.png deleted file mode 100644 index a8bab25..0000000 Binary files a/slack/corrupted_a66c.png and /dev/null differ 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 new file mode 100644 index 0000000..7b7fd54 Binary files /dev/null and b/slack/unknown_a24c.bin differ diff --git a/slack/unknown_aa9c.bin b/slack/unknown_aa9c.bin new file mode 100644 index 0000000..9663709 Binary files /dev/null and b/slack/unknown_aa9c.bin differ -- cgit v1.2.3 From 84cc9c2e3821c3309e7e4dc93f7317c39f6d3dc2 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 17:43:37 +0700 Subject: Identify some more SGB stuff, rework SGB layout constants --- constants/sgb_constants.asm | 33 ++-- data/predef_pointers.inc | 2 +- engine/dumps/bank02.asm | 348 +++++++++++++++++++------------------- engine/dumps/bank09.asm | 2 +- engine/games/pikachu_minigame.asm | 2 +- engine/movie/game_freak_intro.asm | 2 +- engine/movie/title.asm | 2 +- engine/trainer_gear.asm | 8 +- home/tilemap.asm | 2 +- 9 files changed, 197 insertions(+), 204 deletions(-) diff --git a/constants/sgb_constants.asm b/constants/sgb_constants.asm index 31cdeb6..f18ba2c 100644 --- a/constants/sgb_constants.asm +++ b/constants/sgb_constants.asm @@ -2,35 +2,26 @@ const_def const SGB_BATTLE_GRAYSCALE const SGB_BATTLE_COLORS - const SGB_TRAINER_GEAR_PALS + const SGB_TOWN_MAP const SGB_STATS_SCREEN_HP_PALS const SGB_POKEDEX const SGB_SLOT_MACHINE - const SGB_06 + const SGB_TITLE_SCREEN const SGB_GS_INTRO const SGB_DIPLOMA - const SGB_MAPPALS + const SGB_MAP_PALS const SGB_PARTY_MENU const SGB_EVOLUTION - const SGB_GS_TITLE_SCREEN - const SGB_0D - const SGB_MOVE_LIST - const SGB_BETA_PIKACHU_MINIGAME - const SGB_POKEDEX_SEARCH_OPTION - const SGB_BETA_POKER - const SGB_POKEPIC - const SGB_TRAINER_GEAR - const SGB_PACKPALS + const SGB_GF_INTRO const SGB_TRAINER_CARD - const SGB_POKEDEX_UNOWN_MODE - const SGB_BILLS_PC - const SGB_UNOWN_PUZZLE - const SGB_GAMEFREAK_LOGO - const SGB_PLAYER_OR_MON_FRONTPIC_PALS - const SGB_TRADE_TUBE - const SGB_TRAINER_OR_MON_FRONTPIC_PALS - const SGB_MYSTERY_GIFT - const SGB_1E + const SGB_0E + const SGB_PIKACHU_MINIGAME + const SGB_POKEDEX_SELECTION + const SGB_POKER + const SGB_12 + const SGB_TRAINERGEAR + const SGB_TRAINERGEAR_MAP + const SGB_TRAINERGEAR_RADIO SGB_PARTY_MENU_HP_PALS EQU -4 SGB_RAM EQU -1 diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc index d71e4d7..8b0d143 100644 --- a/data/predef_pointers.inc +++ b/data/predef_pointers.inc @@ -88,7 +88,7 @@ GiveItemPredef:: add_predef Function1457a add_predef Function143e0 add_predef CheckSGB - add_predef Function928b + add_predef LoadSGBLayout add_predef Function8786 add_predef DoBattleTransition add_predef Function8c9c6 diff --git a/engine/dumps/bank02.asm b/engine/dumps/bank02.asm index c60c8e0..dbe7866 100755 --- a/engine/dumps/bank02.asm +++ b/engine/dumps/bank02.asm @@ -1281,64 +1281,66 @@ Function91ef: SECTION "engine/dumps/bank02.asm@Function928b", ROMX -Function928b: +LoadSGBLayout: ld a, b cp $ff - jr nz, .sub_9293 + jr nz, .not_ram ld a, [wccd0] -.sub_9293 +.not_ram cp $fc - jp z, Function9604 + jp z, SGB_ApplyPartyMenuHPPals ld l, a - ld h, $00 + ld h, 0 add hl, hl - ld de, Table92a8 + ld de, .Jumptable add hl, de ld a, [hli] ld h, [hl] ld l, a - ld de, Function955f + ld de, _LoadSGBLayout_ReturnFromJumpTable push de jp hl -Table92a8: - dw Function92d4 - dw Function92db - dw Function934b - dw Function9352 - dw Function9382 - dw Function93a6 - dw Function93ad - dw Function93bb - dw Function93b4 - dw Function93fe - dw Function937b - dw Function941a - dw Function93d8 - dw Function9441 - dw Function932b - dw Function93e4 - dw Function939f - dw Function93eb - dw Function9448 - dw Function948e - dw Function94ab - dw Function94c8 - -Function92d4: - ld hl, Data99ec - ld de, Data988c - ret - -Function92db: - ld hl, Data995c +.Jumptable: + dw SGB_BattleGrayscale + dw SGB_BattleColors + dw SGB_TownMap + dw SGB_StatsScreenHPPals + dw SGB_Pokedex + dw SGB_SlotMachine + dw SGB_TitleScreen + dw SGB_GSIntro + dw SGB_Diploma + dw SGB_MapPals + dw SGB_PartyMenu + dw SGB_Evolution + dw SGB_GFIntro + dw SGB_TrainerCard + dw SGB0e + dw SGB_PikachuMinigame + dw SGB_PokedexSelection + dw SGB_Poker + dw SGB12 + dw SGB_TrainerGear + dw SGB_TrainerGearMap + dw SGB_TrainerGearRadio + +SGB_BattleGrayscale: + ld hl, PalPacket_BattleGrayscale + ld de, BlkPacket_Battle + ret + +SGB_BattleColors: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes + ld a, [wca3f] ld hl, wca02 call Function9567 jr c, .sub_92f7 + ld e, $00 call Function9599 .sub_92f7 @@ -1366,15 +1368,15 @@ Function92db: ld a, c ld [hl], a ld hl, wcce1 - ld de, Data988c + ld de, BlkPacket_Battle ld a, $01 ld [wccd0], a ret -Function932b: - ld hl, Data995c +SGB0e: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld hl, wcce2 ld [hl], $10 @@ -1384,18 +1386,18 @@ Function932b: add $23 ld [hl], a ld hl, wcce1 - ld de, Data98bc + ld de, BlkPacket_98bc ret -Function934b: +SGB_TownMap: ld hl, Data99fc - ld de, Data986c + ld de, BlkPacket_986c ret -Function9352: - ld hl, Data995c +SGB_StatsScreenHPPals: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld a, [wMonDexIndex] call Function956d @@ -1409,54 +1411,53 @@ Function9352: pop af ld [hl], a ld hl, wcce1 - ld de, Data98ac + ld de, BlkPacket_StatsScreen ret -Function937b: - ld hl, Data99dc +SGB_PartyMenu: + ld hl, PalPacket_PartyMenu ld de, wcce2 ret -Function9382: - ld hl, Data9a0c +SGB_Pokedex: + ld hl, PalPacket_Pokedex ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld a, [wMonDexIndex] call Function956d ld hl, wcce4 ld [hl], a ld hl, wcce1 - ld de, Data98cc + ld de, BlkPacket_Pokedex ret -Function939f: - ld hl, Data99bc - ld de, Data986c +SGB_PokedexSelection: + ld hl, PalPacket_99bc + ld de, BlkPacket_986c ret -Function93a6: - ld hl, Data9a1c - ld de, Data98dc +SGB_SlotMachine: + ld hl, PalPacket_SlotMachine + ld de, BlkPacket_SlotMachine ret -Function93ad: - ld hl, Data9a2c - ld de, Data993c +SGB_TitleScreen: + ld hl, PalPacket_TitleScreen + ld de, BlkPacket_TitleScreen ret -Function93b4: - ld hl, Data9a3c - ld de, Data986c +SGB_Diploma: + ld hl, PalPacket_9a3c + ld de, BlkPacket_986c ret -Function93bb: - ld b, $00 - ld hl, Table93cc - add hl, bc - add hl, bc - add hl, bc +SGB_GSIntro: + ld b, 0 + ld hl, .BlkPacketTable +rept 4 add hl, bc +endr ld e, [hl] inc hl ld d, [hl] @@ -1466,55 +1467,50 @@ Function93bb: ld l, a ret -Table93cc: - dw Data986c - dw Data996c - - dw Data987c - dw Data998c +.BlkPacketTable: + dw BlkPacket_986c, PalPacket_GSIntroShellderLapras + dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu + dw BlkPacket_986c, PalPacket_GSIntroStartersTransition - dw Data986c - dw Data999c - -Function93d8: - ld hl, Data9a4c - ld de, Data986c +SGB_GFIntro: + ld hl, PalPacket_GFIntro + ld de, BlkPacket_986c ld a, $08 ld [wccd0], a ret -Function93e4: - ld hl, Data99cc - ld de, Data986c +SGB_PikachuMinigame: + ld hl, PalPacket_PikachuMinigame + ld de, BlkPacket_986c ret -Function93eb: - ld hl, Data986c +SGB_Poker: + ld hl, BlkPacket_986c ld de, wc51a - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes - ld hl, Data994c - ld de, Data986c + ld hl, PalPacket_Poker + ld de, BlkPacket_986c ret -Function93fe: - ld hl, Data995c +SGB_MapPals: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes - call Function94e5 + call GetMapPalsIndex ld hl, wcce2 ld [hld], a - ld de, Data986c + ld de, BlkPacket_986c ld a, $09 ld [wccd0], a ret -Function941a: +SGB_Evolution: push bc - ld hl, Data995c + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes pop bc ld a, c @@ -1527,24 +1523,24 @@ Function941a: .sub_9437 ld [wcce2], a ld hl, wcce1 - ld de, Data986c + ld de, BlkPacket_986c ret -Function9441: - ld hl, Data9a3c - ld de, Data986c +SGB_TrainerCard: + ld hl, PalPacket_9a3c + ld de, BlkPacket_986c ret -Function9448: - ld hl, Data995c +SGB12: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes - ld hl, Data986c + ld hl, BlkPacket_986c ld de, wccf1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes - call Function94e5 + call GetMapPalsIndex ld hl, wcce2 ld [hl], a ld a, [wMonDexIndex] @@ -1566,82 +1562,88 @@ Function9448: ld de, wccf1 ret -Function948e: - ld hl, Data995c +SGB_TrainerGear: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld a, $16 ld [wcce2], a ld a, $30 ld [wcce4], a ld hl, wcce1 - ld de, Data992c + ld de, BlkPacket_TrainerGear ret -Function94ab: - ld hl, Data995c +SGB_TrainerGearMap: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld a, $16 ld [wcce2], a ld a, $26 ld [wcce4], a ld hl, wcce1 - ld de, Data992c + ld de, BlkPacket_TrainerGear ret -Function94c8: - ld hl, Data995c +SGB_TrainerGearRadio: + ld hl, PalPacket_995c ld de, wcce1 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes ld a, $16 ld [wcce2], a ld a, $39 ld [wcce4], a ld hl, wcce1 - ld de, Data992c + ld de, BlkPacket_TrainerGear ret -Function94e5: +GetMapPalsIndex: ld a, [wMapPermissions] - cp $02 - jr z, .sub_950e - cp $04 - jr z, .sub_9516 - cp $06 - jr z, .sub_951e - cp $05 - jr z, .sub_9521 - cp $03 - jr z, .sub_9505 + cp ROUTE + jr z, .is_route + cp CAVE + jr z, .is_cave + cp GATE + jr z, .is_gate + cp ENVIRONMENT_5 + jr z, .env5 + cp INDOOR + jr z, .indoors call Function9527 jr c, .sub_9524 call Function9543 ret -.sub_9505 + +.indoors call Function9536 jr c, .sub_9524 call Function9543 ret -.sub_950e + +.is_route call Function9527 jr c, .sub_9524 ld a, $00 ret -.sub_9516 + +.is_cave call Function9527 jr c, .sub_9524 ld a, $0c ret -.sub_951e + +.is_gate ld a, $03 ret -.sub_9521 + +.env5 ld a, $04 ret + .sub_9524 ld a, $0d ret @@ -1682,7 +1684,7 @@ Data954f: db $01, $07, $0c, $03, $08, $06, $0b, $04 db $05, $0a, $02, $03, $02, $02, $09, $01 -Function955f: +_LoadSGBLayout_ReturnFromJumpTable: push de call PushSGBPals pop hl @@ -1796,12 +1798,12 @@ Function95cc: ret Function95f8: - ld hl, Data98fc + ld hl, BlkPacket_98fc ld de, wcce2 ld bc, $0030 jp CopyBytes -Function9604: +SGB_ApplyPartyMenuHPPals: ld hl, wccd3 ld a, [wcce1] ld e, a @@ -1828,19 +1830,19 @@ Function9604: ret LoadMagikarpPalettes_Intro: - ld hl, Data997c + ld hl, PalPacket_MagikarpIntro jp PushSGBPals LoadForestPalettes2_Intro: - ld hl, Data986c + ld hl, BlkPacket_986c jp PushSGBPals LoadVenusaurPalettes_Intro: - ld hl, Data99ac + ld hl, PalPacket_VenusaurIntro jp PushSGBPals LoadCharizardPalettes_Intro: - ld hl, Data99bc + ld hl, PalPacket_99bc jp PushSGBPals Function9645: @@ -2168,15 +2170,15 @@ SGBDelayCycles: jr nz, .sub_9863 ret -Data986c: +BlkPacket_986c: db $21, $01, $03, $00, $00, $00, $13, $11 db $00, $00, $00, $00, $00, $00, $00, $00 -Data987c: +BlkPacket_GSIntroJigglypuffPikachu: db $21, $01, $07, $05, $00, $0a, $13, $0d db $00, $00, $00, $00, $00, $00, $00, $00 -Data988c: +BlkPacket_Battle: db $22, $05, $07, $0a, $00, $0c, $13, $11 db $03, $05, $01, $00, $0a, $03, $03, $00 @@ -2184,19 +2186,19 @@ Data989c: db $0a, $08, $13, $0a, $03, $0a, $00, $04 db $08, $0b, $03, $0f, $0b, $00, $13, $07 -Data98ac: +BlkPacket_StatsScreen: db $21, $01, $07, $05, $00, $01, $07, $07 db $00, $00, $00, $00, $00, $00, $00, $00 -Data98bc: +BlkPacket_98bc: db $21, $01, $07, $05, $0b, $01, $13, $02 db $00, $00, $00, $00, $00, $00, $00, $00 -Data98cc: +BlkPacket_Pokedex: db $21, $01, $07, $05, $01, $01, $08, $08 db $00, $00, $00, $00, $00, $00, $00, $00 -Data98dc: +BlkPacket_SlotMachine: db $22, $05, $03, $05, $00, $00, $13, $0b db $03, $0a, $00, $04, $13, $09, $02, $0f @@ -2204,7 +2206,7 @@ Data98ec: db $00, $06, $13, $07, $03, $00, $04, $04 db $0f, $09, $03, $00, $00, $0c, $13, $11 -Data98fc: +BlkPacket_98fc: db $23, $07, $07, $10, $00, $00, $02, $0c db $02, $00, $0c, $00, $12, $01, $02, $00 @@ -2216,55 +2218,55 @@ Data991c: db $02, $00, $0c, $08, $12, $09, $02, $00 db $0c, $0a, $12, $0b, $00, $00, $00, $00 -Data992c: +BlkPacket_TrainerGear: db $21, $01, $07, $10, $00, $00, $13, $02 db $00, $00, $00, $00, $00, $00, $00, $00 -Data993c: +BlkPacket_TitleScreen: db $21, $01, $07, $10, $00, $00, $13, $05 db $00, $00, $00, $00, $00, $00, $00, $00 -Data994c: +PalPacket_Poker: db $51, $35, $00, $36, $00, $37, $00, $38 db $00, $00, $00, $00, $00, $00, $00, $00 -Data995c: +PalPacket_995c: db $51, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data996c: +PalPacket_GSIntroShellderLapras: db $51, $2a, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data997c: +PalPacket_MagikarpIntro: db $51, $2b, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data998c: +PalPacket_GSIntroJigglypuffPikachu: db $51, $2c, $00, $2d, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data999c: +PalPacket_GSIntroStartersTransition: db $51, $2e, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data99ac: +PalPacket_VenusaurIntro: db $51, $2f, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data99bc: +PalPacket_99bc: db $51, $30, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data99cc: +PalPacket_PikachuMinigame: db $51, $2d, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data99dc: +PalPacket_PartyMenu: db $51, $22, $00, $23, $00, $24, $00, $25 db $00, $00, $00, $00, $00, $00, $00, $00 -Data99ec: +PalPacket_BattleGrayscale: db $51, $0e, $00, $0e, $00, $0e, $00, $0e db $00, $00, $00, $00, $00, $00, $00, $00 @@ -2272,23 +2274,23 @@ Data99fc: db $51, $26, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a0c: +PalPacket_Pokedex: db $51, $30, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a1c: +PalPacket_SlotMachine: db $51, $31, $00, $32, $00, $33, $00, $34 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a2c: +PalPacket_TitleScreen: db $51, $27, $00, $28, $00, $0f, $00, $13 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a3c: +PalPacket_9a3c: db $51, $0f, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 -Data9a4c: +PalPacket_GFIntro: db $51, $29, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/engine/dumps/bank09.asm b/engine/dumps/bank09.asm index 39d902e..8851fbb 100644 --- a/engine/dumps/bank09.asm +++ b/engine/dumps/bank09.asm @@ -354,7 +354,7 @@ Function2420b: call LoadMenuHeader call MenuBox call UpdateSprites - ld b, SGB_POKEPIC + ld b, SGB_12 call GetSGBLayout xor a ldh [hBGMapMode], a diff --git a/engine/games/pikachu_minigame.asm b/engine/games/pikachu_minigame.asm index de930da..4230771 100644 --- a/engine/games/pikachu_minigame.asm +++ b/engine/games/pikachu_minigame.asm @@ -36,7 +36,7 @@ PikachuMiniGame:: .Init: call DisableLCD - ld b, SGB_BETA_PIKACHU_MINIGAME + ld b, SGB_PIKACHU_MINIGAME call GetSGBLayout callab InitEffectObject call PikachuMiniGame_ClearBothTilemaps diff --git a/engine/movie/game_freak_intro.asm b/engine/movie/game_freak_intro.asm index 9ae95c9..e3474a2 100644 --- a/engine/movie/game_freak_intro.asm +++ b/engine/movie/game_freak_intro.asm @@ -23,7 +23,7 @@ GameFreakIntro:: ld c, 10 call DelayFrames - ld b, SGB_GS_TITLE_SCREEN + ld b, SGB_GF_INTRO call GetSGBLayout callab IntroCopyRightInfo diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 2323d38..8ddf260 100644 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -118,7 +118,7 @@ TitleSequenceInit:: ld a, " " call ByteFill - ld b, $06 + ld b, SGB_TITLE_SCREEN call GetSGBLayout call EnableLCD ld a, $01 diff --git a/engine/trainer_gear.asm b/engine/trainer_gear.asm index 32e3a91..e7ef0db 100644 --- a/engine/trainer_gear.asm +++ b/engine/trainer_gear.asm @@ -89,7 +89,7 @@ TrainerGear_Init: call ClearBGPalettes call DisableLCD call ClearSprites - ld b, SGB_TRAINER_GEAR + ld b, SGB_TRAINERGEAR call GetSGBLayout ld hl, TrainerGearGFX @@ -282,7 +282,7 @@ TrainerGear_Map: call TrainerGear_Next call TrainerGear_ClearView call WaitForAutoBgMapTransfer - ld b, SGB_PACKPALS + ld b, SGB_TRAINERGEAR_MAP call GetSGBLayout ld de, TownMapGFX ld hl, vTilesetEnd @@ -312,7 +312,7 @@ TrainerGear_Radio: call TrainerGear_Next call TrainerGear_ClearView call WaitForAutoBgMapTransfer - ld b, SGB_TRAINER_CARD + ld b, SGB_TRAINERGEAR_RADIO call GetSGBLayout ld de, RadioGFX @@ -595,7 +595,7 @@ TrainerGear_Phone: call TrainerGear_Next call TrainerGear_ClearView call WaitForAutoBgMapTransfer - ld b, SGB_TRAINER_GEAR + ld b, SGB_TRAINERGEAR call GetSGBLayout call LoadFontExtra ld de, .OutOfRangeText diff --git a/home/tilemap.asm b/home/tilemap.asm index 3146db1..c9b5ae1 100644 --- a/home/tilemap.asm +++ b/home/tilemap.asm @@ -42,7 +42,7 @@ GetSGBLayout:: ld a, [wSGB] and a ret z - predef_jump Function928b + predef_jump LoadSGBLayout SetHPPal:: ld a, e -- cgit v1.2.3 From 3384ac5d7a7c8118d6701576680ea1e71624983c Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 17:52:23 +0700 Subject: split SGB packet data --- data/sgb/blk_packets.inc | 56 +++++++++++++ data/sgb/ctrl_packets.inc | 60 +++++++++++++ data/sgb/pal_packets.inc | 68 +++++++++++++++ engine/dumps/bank02.asm | 208 ++++------------------------------------------ 4 files changed, 198 insertions(+), 194 deletions(-) create mode 100644 data/sgb/blk_packets.inc create mode 100644 data/sgb/ctrl_packets.inc create mode 100644 data/sgb/pal_packets.inc diff --git a/data/sgb/blk_packets.inc b/data/sgb/blk_packets.inc new file mode 100644 index 0000000..136f73d --- /dev/null +++ b/data/sgb/blk_packets.inc @@ -0,0 +1,56 @@ +BlkPacket_986c: + db $21, $01, $03, $00, $00, $00, $13, $11 + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_GSIntroJigglypuffPikachu: + db $21, $01, $07, $05, $00, $0a, $13, $0d + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_Battle: + db $22, $05, $07, $0a, $00, $0c, $13, $11 + db $03, $05, $01, $00, $0a, $03, $03, $00 + +Data989c: + db $0a, $08, $13, $0a, $03, $0a, $00, $04 + db $08, $0b, $03, $0f, $0b, $00, $13, $07 + +BlkPacket_StatsScreen: + db $21, $01, $07, $05, $00, $01, $07, $07 + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_98bc: + db $21, $01, $07, $05, $0b, $01, $13, $02 + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_Pokedex: + db $21, $01, $07, $05, $01, $01, $08, $08 + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_SlotMachine: + db $22, $05, $03, $05, $00, $00, $13, $0b + db $03, $0a, $00, $04, $13, $09, $02, $0f + +Data98ec: + db $00, $06, $13, $07, $03, $00, $04, $04 + db $0f, $09, $03, $00, $00, $0c, $13, $11 + +BlkPacket_98fc: + db $23, $07, $07, $10, $00, $00, $02, $0c + db $02, $00, $0c, $00, $12, $01, $02, $00 + +Data990c: + db $0c, $02, $12, $03, $02, $00, $0c, $04 + db $12, $05, $02, $00, $0c, $06, $12, $07 + +Data991c: + db $02, $00, $0c, $08, $12, $09, $02, $00 + db $0c, $0a, $12, $0b, $00, $00, $00, $00 + +BlkPacket_TrainerGear: + db $21, $01, $07, $10, $00, $00, $13, $02 + db $00, $00, $00, $00, $00, $00, $00, $00 + +BlkPacket_TitleScreen: + db $21, $01, $07, $10, $00, $00, $13, $05 + db $00, $00, $00, $00, $00, $00, $00, $00 + diff --git a/data/sgb/ctrl_packets.inc b/data/sgb/ctrl_packets.inc new file mode 100644 index 0000000..bcca0ed --- /dev/null +++ b/data/sgb/ctrl_packets.inc @@ -0,0 +1,60 @@ +PalTrnPacket: + db $59, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +MltReq1Packet: + db $89, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +MltReq2Packet: + db $89, $01, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +ChrTrnPacket: + db $99, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PctTrnPacket: + db $a1, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +MaskEnFreezePacket: + db $b9, $01, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +MaskEnCancelPacket: + db $b9, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +DataSndPacket1: + db $79, $5d, $08, $00, $0b, $8c, $d0, $f4 + db $60, $00, $00, $00, $00, $00, $00, $00 + +DataSndPacket2: + db $79, $52, $08, $00, $0b, $a9, $e7, $9f + db $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0 + +DataSndPacket3: + db $79, $47, $08, $00, $0b, $c4, $d0, $16 + db $a5, $cb, $c9, $05, $d0, $10, $a2, $28 + +DataSndPacket4: + db $79, $3c, $08, $00, $0b, $f0, $12, $a5 + db $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9 + +DataSndPacket5: + db $79, $31, $08, $00, $0b, $0c, $a5, $ca + db $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e + +DataSndPacket6: + db $79, $26, $08, $00, $0b, $39, $cd, $48 + db $0c, $d0, $34, $a5, $c9, $c9, $80, $d0 + +DataSndPacket7: + db $79, $1b, $08, $00, $0b, $ea, $ea, $ea + db $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0 + +DataSndPacket8: + db $79, $10, $08, $00, $0b, $4c, $20, $08 + db $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea + diff --git a/data/sgb/pal_packets.inc b/data/sgb/pal_packets.inc new file mode 100644 index 0000000..8537072 --- /dev/null +++ b/data/sgb/pal_packets.inc @@ -0,0 +1,68 @@ +PalPacket_Poker: + db $51, $35, $00, $36, $00, $37, $00, $38 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_995c: + db $51, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_GSIntroShellderLapras: + db $51, $2a, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_MagikarpIntro: + db $51, $2b, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_GSIntroJigglypuffPikachu: + db $51, $2c, $00, $2d, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_GSIntroStartersTransition: + db $51, $2e, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_VenusaurIntro: + db $51, $2f, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_99bc: + db $51, $30, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_PikachuMinigame: + db $51, $2d, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_PartyMenu: + db $51, $22, $00, $23, $00, $24, $00, $25 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_BattleGrayscale: + db $51, $0e, $00, $0e, $00, $0e, $00, $0e + db $00, $00, $00, $00, $00, $00, $00, $00 + +Data99fc: + db $51, $26, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_Pokedex: + db $51, $30, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_SlotMachine: + db $51, $31, $00, $32, $00, $33, $00, $34 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_TitleScreen: + db $51, $27, $00, $28, $00, $0f, $00, $13 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_9a3c: + db $51, $0f, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + +PalPacket_GFIntro: + db $51, $29, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + diff --git a/engine/dumps/bank02.asm b/engine/dumps/bank02.asm index dbe7866..3afdd61 100755 --- a/engine/dumps/bank02.asm +++ b/engine/dumps/bank02.asm @@ -2142,214 +2142,34 @@ ClearBytes: ret DrawDefaultTiles: - ld hl, vBGMap0 - ld de, $000c + hlbgcoord 0, 0 + ld de, BG_MAP_WIDTH - SCREEN_WIDTH ld a, $80 - ld c, $0d -.sub_9854 - ld b, $14 -.sub_9856 + ld c, 12 + 1 +.line + ld b, SCREEN_WIDTH +.tile ld [hli], a inc a dec b - jr nz, .sub_9856 + jr nz, .tile add hl, de dec c - jr nz, .sub_9854 + jr nz, .line ret SGBDelayCycles: - ld de, $1b58 -.sub_9863 + ld de, 7000 +.wait nop nop nop dec de ld a, d or e - jr nz, .sub_9863 + jr nz, .wait ret -BlkPacket_986c: - db $21, $01, $03, $00, $00, $00, $13, $11 - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_GSIntroJigglypuffPikachu: - db $21, $01, $07, $05, $00, $0a, $13, $0d - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_Battle: - db $22, $05, $07, $0a, $00, $0c, $13, $11 - db $03, $05, $01, $00, $0a, $03, $03, $00 - -Data989c: - db $0a, $08, $13, $0a, $03, $0a, $00, $04 - db $08, $0b, $03, $0f, $0b, $00, $13, $07 - -BlkPacket_StatsScreen: - db $21, $01, $07, $05, $00, $01, $07, $07 - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_98bc: - db $21, $01, $07, $05, $0b, $01, $13, $02 - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_Pokedex: - db $21, $01, $07, $05, $01, $01, $08, $08 - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_SlotMachine: - db $22, $05, $03, $05, $00, $00, $13, $0b - db $03, $0a, $00, $04, $13, $09, $02, $0f - -Data98ec: - db $00, $06, $13, $07, $03, $00, $04, $04 - db $0f, $09, $03, $00, $00, $0c, $13, $11 - -BlkPacket_98fc: - db $23, $07, $07, $10, $00, $00, $02, $0c - db $02, $00, $0c, $00, $12, $01, $02, $00 - -Data990c: - db $0c, $02, $12, $03, $02, $00, $0c, $04 - db $12, $05, $02, $00, $0c, $06, $12, $07 - -Data991c: - db $02, $00, $0c, $08, $12, $09, $02, $00 - db $0c, $0a, $12, $0b, $00, $00, $00, $00 - -BlkPacket_TrainerGear: - db $21, $01, $07, $10, $00, $00, $13, $02 - db $00, $00, $00, $00, $00, $00, $00, $00 - -BlkPacket_TitleScreen: - db $21, $01, $07, $10, $00, $00, $13, $05 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_Poker: - db $51, $35, $00, $36, $00, $37, $00, $38 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_995c: - db $51, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_GSIntroShellderLapras: - db $51, $2a, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_MagikarpIntro: - db $51, $2b, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_GSIntroJigglypuffPikachu: - db $51, $2c, $00, $2d, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_GSIntroStartersTransition: - db $51, $2e, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_VenusaurIntro: - db $51, $2f, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_99bc: - db $51, $30, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_PikachuMinigame: - db $51, $2d, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_PartyMenu: - db $51, $22, $00, $23, $00, $24, $00, $25 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_BattleGrayscale: - db $51, $0e, $00, $0e, $00, $0e, $00, $0e - db $00, $00, $00, $00, $00, $00, $00, $00 - -Data99fc: - db $51, $26, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_Pokedex: - db $51, $30, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_SlotMachine: - db $51, $31, $00, $32, $00, $33, $00, $34 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_TitleScreen: - db $51, $27, $00, $28, $00, $0f, $00, $13 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_9a3c: - db $51, $0f, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalPacket_GFIntro: - db $51, $29, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PalTrnPacket: - db $59, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -MltReq1Packet: - db $89, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -MltReq2Packet: - db $89, $01, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -ChrTrnPacket: - db $99, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -PctTrnPacket: - db $a1, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -MaskEnFreezePacket: - db $b9, $01, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -MaskEnCancelPacket: - db $b9, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - -DataSndPacket1: - db $79, $5d, $08, $00, $0b, $8c, $d0, $f4 - db $60, $00, $00, $00, $00, $00, $00, $00 - -DataSndPacket2: - db $79, $52, $08, $00, $0b, $a9, $e7, $9f - db $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0 - -DataSndPacket3: - db $79, $47, $08, $00, $0b, $c4, $d0, $16 - db $a5, $cb, $c9, $05, $d0, $10, $a2, $28 - -DataSndPacket4: - db $79, $3c, $08, $00, $0b, $f0, $12, $a5 - db $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9 - -DataSndPacket5: - db $79, $31, $08, $00, $0b, $0c, $a5, $ca - db $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e - -DataSndPacket6: - db $79, $26, $08, $00, $0b, $39, $cd, $48 - db $0c, $d0, $34, $a5, $c9, $c9, $80, $d0 - -DataSndPacket7: - db $79, $1b, $08, $00, $0b, $ea, $ea, $ea - db $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0 - -DataSndPacket8: - db $79, $10, $08, $00, $0b, $4c, $20, $08 - db $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea +INCLUDE "data/sgb/blk_packets.inc" +INCLUDE "data/sgb/pal_packets.inc" +INCLUDE "data/sgb/ctrl_packets.inc" -- cgit v1.2.3 From 437e556b3dd0d37609e1a629aed473f88c068be3 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 17:59:29 +0700 Subject: Split GFX routines --- engine/dumps/bank02.asm | 921 ------------------------------------ engine/gfx.asm | 139 ------ engine/gfx/load_gfx.asm | 139 ++++++ engine/gfx/set_title_decoration.asm | 33 ++ engine/gfx/sgb_layouts.asm | 897 +++++++++++++++++++++++++++++++++++ layout.link | 6 +- 6 files changed, 1072 insertions(+), 1063 deletions(-) delete mode 100644 engine/gfx.asm create mode 100644 engine/gfx/load_gfx.asm create mode 100644 engine/gfx/set_title_decoration.asm create mode 100644 engine/gfx/sgb_layouts.asm diff --git a/engine/dumps/bank02.asm b/engine/dumps/bank02.asm index 3afdd61..bb1528c 100755 --- a/engine/dumps/bank02.asm +++ b/engine/dumps/bank02.asm @@ -1252,924 +1252,3 @@ Data8a53: db $3c, $14, $3c, $20, $48, $14, $54, $1c db $54, $2c, $54, $38, $3c, $44, $48, $2c -SECTION "engine/dumps/bank02.asm@SetTitleBGDecorationBorder", ROMX - -SetTitleBGDecorationBorder: - ld de, TitleBGDecorationBorder - ld hl, vChars2 + $500 - lb bc, BANK(TitleBGDecorationBorder), $09 - call Request2bpp - coord hl, 0, 8 - ld b, $50 - call Function91ef - coord hl, 0, 16 - ld b, $54 - call Function91ef - ret - -Function91ef: - xor a - ld c, $14 -.sub_91f2 - and $03 - or b - ld [hli], a - inc a - dec c - jr nz, .sub_91f2 - ret - -SECTION "engine/dumps/bank02.asm@Function928b", ROMX - -LoadSGBLayout: - ld a, b - cp $ff - jr nz, .not_ram - ld a, [wccd0] -.not_ram - cp $fc - jp z, SGB_ApplyPartyMenuHPPals - ld l, a - ld h, 0 - add hl, hl - ld de, .Jumptable - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, _LoadSGBLayout_ReturnFromJumpTable - push de - jp hl - -.Jumptable: - dw SGB_BattleGrayscale - dw SGB_BattleColors - dw SGB_TownMap - dw SGB_StatsScreenHPPals - dw SGB_Pokedex - dw SGB_SlotMachine - dw SGB_TitleScreen - dw SGB_GSIntro - dw SGB_Diploma - dw SGB_MapPals - dw SGB_PartyMenu - dw SGB_Evolution - dw SGB_GFIntro - dw SGB_TrainerCard - dw SGB0e - dw SGB_PikachuMinigame - dw SGB_PokedexSelection - dw SGB_Poker - dw SGB12 - dw SGB_TrainerGear - dw SGB_TrainerGearMap - dw SGB_TrainerGearRadio - -SGB_BattleGrayscale: - ld hl, PalPacket_BattleGrayscale - ld de, BlkPacket_Battle - ret - -SGB_BattleColors: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - - ld a, [wca3f] - ld hl, wca02 - call Function9567 - jr c, .sub_92f7 - - ld e, $00 - call Function9599 -.sub_92f7 - ld b, a - ld a, [wca44] - ld hl, wcdd7 - call Function9567 - jr c, .sub_9308 - ld e, $01 - call Function9599 -.sub_9308 - ld c, a - ld hl, wcce2 - ld a, [wccd1] - add $23 - ld [hli], a - inc hl - ld a, [wccd2] - add $23 - ld [hli], a - inc hl - ld a, b - ld [hli], a - inc hl - ld a, c - ld [hl], a - ld hl, wcce1 - ld de, BlkPacket_Battle - ld a, $01 - ld [wccd0], a - ret - -SGB0e: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld hl, wcce2 - ld [hl], $10 - inc hl - inc hl - ld a, [wccd1] - add $23 - ld [hl], a - ld hl, wcce1 - ld de, BlkPacket_98bc - ret - -SGB_TownMap: - ld hl, Data99fc - ld de, BlkPacket_986c - ret - -SGB_StatsScreenHPPals: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld a, [wMonDexIndex] - call Function956d - call Function957e - push af - ld hl, wcce2 - ld a, [wccd9] - add $23 - ld [hli], a - inc hl - pop af - ld [hl], a - ld hl, wcce1 - ld de, BlkPacket_StatsScreen - ret - -SGB_PartyMenu: - ld hl, PalPacket_PartyMenu - ld de, wcce2 - ret - -SGB_Pokedex: - ld hl, PalPacket_Pokedex - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld a, [wMonDexIndex] - call Function956d - ld hl, wcce4 - ld [hl], a - ld hl, wcce1 - ld de, BlkPacket_Pokedex - ret - -SGB_PokedexSelection: - ld hl, PalPacket_99bc - ld de, BlkPacket_986c - ret - -SGB_SlotMachine: - ld hl, PalPacket_SlotMachine - ld de, BlkPacket_SlotMachine - ret - -SGB_TitleScreen: - ld hl, PalPacket_TitleScreen - ld de, BlkPacket_TitleScreen - ret - -SGB_Diploma: - ld hl, PalPacket_9a3c - ld de, BlkPacket_986c - ret - -SGB_GSIntro: - ld b, 0 - ld hl, .BlkPacketTable -rept 4 - add hl, bc -endr - ld e, [hl] - inc hl - ld d, [hl] - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - ret - -.BlkPacketTable: - dw BlkPacket_986c, PalPacket_GSIntroShellderLapras - dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu - dw BlkPacket_986c, PalPacket_GSIntroStartersTransition - -SGB_GFIntro: - ld hl, PalPacket_GFIntro - ld de, BlkPacket_986c - ld a, $08 - ld [wccd0], a - ret - -SGB_PikachuMinigame: - ld hl, PalPacket_PikachuMinigame - ld de, BlkPacket_986c - ret - -SGB_Poker: - ld hl, BlkPacket_986c - ld de, wc51a - ld bc, PALPACKET_LENGTH - call CopyBytes - ld hl, PalPacket_Poker - ld de, BlkPacket_986c - ret - -SGB_MapPals: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - call GetMapPalsIndex - ld hl, wcce2 - ld [hld], a - ld de, BlkPacket_986c - ld a, $09 - ld [wccd0], a - ret - -SGB_Evolution: - push bc - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - pop bc - ld a, c - and a - ld a, $0e - jr nz, .sub_9437 - ld a, [wccd1] - call Function956d - call Function957e -.sub_9437 - ld [wcce2], a - ld hl, wcce1 - ld de, BlkPacket_986c - ret - -SGB_TrainerCard: - ld hl, PalPacket_9a3c - ld de, BlkPacket_986c - ret - -SGB12: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld hl, BlkPacket_986c - ld de, wccf1 - ld bc, PALPACKET_LENGTH - call CopyBytes - call GetMapPalsIndex - ld hl, wcce2 - ld [hl], a - ld a, [wMonDexIndex] - call Function956d - ld hl, wcce4 - ld [hl], a - ld hl, wccf4 - ld a, $05 - ld [hli], a - ld a, [wMenuBorderLeftCoord] - ld [hli], a - ld a, [wMenuBorderTopCoord] - ld [hli], a - ld a, [wMenuBorderRightCoord] - ld [hli], a - ld a, [wMenuBorderBottomCoord] - ld [hl], a - ld hl, wcce1 - ld de, wccf1 - ret - -SGB_TrainerGear: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld a, $16 - ld [wcce2], a - ld a, $30 - ld [wcce4], a - ld hl, wcce1 - ld de, BlkPacket_TrainerGear - ret - -SGB_TrainerGearMap: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld a, $16 - ld [wcce2], a - ld a, $26 - ld [wcce4], a - ld hl, wcce1 - ld de, BlkPacket_TrainerGear - ret - -SGB_TrainerGearRadio: - ld hl, PalPacket_995c - ld de, wcce1 - ld bc, PALPACKET_LENGTH - call CopyBytes - ld a, $16 - ld [wcce2], a - ld a, $39 - ld [wcce4], a - ld hl, wcce1 - ld de, BlkPacket_TrainerGear - ret - -GetMapPalsIndex: - ld a, [wMapPermissions] - cp ROUTE - jr z, .is_route - cp CAVE - jr z, .is_cave - cp GATE - jr z, .is_gate - cp ENVIRONMENT_5 - jr z, .env5 - cp INDOOR - jr z, .indoors - call Function9527 - jr c, .sub_9524 - call Function9543 - ret - -.indoors - call Function9536 - jr c, .sub_9524 - call Function9543 - ret - -.is_route - call Function9527 - jr c, .sub_9524 - ld a, $00 - ret - -.is_cave - call Function9527 - jr c, .sub_9524 - ld a, $0c - ret - -.is_gate - ld a, $03 - ret - -.env5 - ld a, $04 - ret - -.sub_9524 - ld a, $0d - ret - -Function9527: - ld a, [wTimeOfDay] - and $03 - jr z, .sub_9534 - cp $03 - jr z, .sub_9534 - scf - ret -.sub_9534 - and a - ret - -Function9536: - ld a, [wTimeOfDay] - and $03 - cp $02 - jr nz, .sub_9541 - scf - ret -.sub_9541 - and a - ret - -Function9543: - ld a, [wMapGroup] - ld e, a - ld d, $00 - ld hl, Data954f - add hl, de - ld a, [hl] - ret - -Data954f: - db $01, $07, $0c, $03, $08, $06, $0b, $04 - db $05, $0a, $02, $03, $02, $02, $09, $01 - -_LoadSGBLayout_ReturnFromJumpTable: - push de - call PushSGBPals - pop hl - jp PushSGBPals - -Function9567: - bit 3, a - ld a, $18 - ret nz - ld a, [hl] - -Function956d: - and a - jr z, .sub_957a - ld e, a - ld d, $00 - ld hl, PokemonPalettes - add hl, de - ld a, [hl] - and a - ret -.sub_957a - ld a, $0f - scf - ret - -Function957e: - push bc - push af - ld hl, wPartyMon1DVs - ld a, [wWhichPokemon] - ld bc, $0030 - call AddNTimes - call Function95b0 - ld b, $00 - jr nc, .sub_9595 - ld b, $0a -.sub_9595 - pop af - add b - pop bc - ret - -Function9599: - push bc - push af - ld a, e - and a - ld a, [wcae1] - jr z, .sub_95a4 - srl a -.sub_95a4 - srl a - ld b, $00 - jr nc, .sub_95ac - ld b, $0a -.sub_95ac - pop af - add b - pop bc - ret - -Function95b0: - ld a, [hl] - cp $a0 - jr c, .sub_95ca - ld a, [hli] - and $0f - cp $0a - jr c, .sub_95ca - ld a, [hl] - cp $a0 - jr c, .sub_95ca - ld a, [hl] - and $0f - cp $0a - jr c, .sub_95ca - scf - ret -.sub_95ca - and a - ret - -Function95cc: - ld hl, wcddf - ldh a, [hBattleTurn] - and a - jr nz, .sub_95d7 - ld hl, wca08 -.sub_95d7 - call Function95b0 - ld hl, wcae1 - jr nc, .sub_95ec - ldh a, [hBattleTurn] - and a - jr nz, .sub_95e8 - set 0, [hl] - jr .sub_95f7 -.sub_95e8 - set 1, [hl] - jr .sub_95f7 -.sub_95ec - ldh a, [hBattleTurn] - and a - jr nz, .sub_95f5 - res 0, [hl] - jr .sub_95f7 -.sub_95f5 - res 1, [hl] -.sub_95f7 - ret - -Function95f8: - ld hl, BlkPacket_98fc - ld de, wcce2 - ld bc, $0030 - jp CopyBytes - -SGB_ApplyPartyMenuHPPals: - ld hl, wccd3 - ld a, [wcce1] - ld e, a - ld d, $00 - add hl, de - ld e, l - ld d, h - ld a, [de] - and a - ld e, $05 - jr z, .sub_961d - dec a - ld e, $0a - jr z, .sub_961d - ld e, $0f -.sub_961d - push de - ld hl, wcceb - ld bc, $0006 - ld a, [wcce1] - call AddNTimes - pop de - ld [hl], e - ret - -LoadMagikarpPalettes_Intro: - ld hl, PalPacket_MagikarpIntro - jp PushSGBPals - -LoadForestPalettes2_Intro: - ld hl, BlkPacket_986c - jp PushSGBPals - -LoadVenusaurPalettes_Intro: - ld hl, PalPacket_VenusaurIntro - jp PushSGBPals - -LoadCharizardPalettes_Intro: - ld hl, PalPacket_99bc - jp PushSGBPals - -Function9645: - ld hl, wc51a - jp PushSGBPals - -PushSGBPals: - ld a, [wJoypadFlags] - push af - set 7, a - ld [wJoypadFlags], a - call _PushSGBPals - pop af - ld [wJoypadFlags], a - ret - -_PushSGBPals: - ld a, [hl] - and $7 - ret z - ld b, a -.loop - push bc - xor a - ldh [rJOYP], a - ld a, $30 - ldh [rJOYP], a - ld b, $10 -.loop2 - ld e, $08 - ld a, [hli] - ld d, a -.loop3 - bit 0, d - ld a, $10 - jr nz, .ok - ld a, $20 -.ok - ldh [rJOYP], a - ld a, $30 - ldh [rJOYP], a - rr d - dec e - jr nz, .loop3 - dec b - jr nz, .loop2 - ld a, $20 - ldh [rJOYP], a - ld a, $30 - ldh [rJOYP], a - call SGBDelayCycles - pop bc - dec b - jr nz, .loop - ret - -CheckSGB: - ld a, [wJoypadFlags] - push af - set 7, a - ld [wJoypadFlags], a - - xor a - ldh [rJOYP], a - ld [wSGB], a - call PushSGBBorderPalsAndWait - jr nc, .skip - ld a, 1 - ld [wSGB], a - call _InitSGBBorderPals - call PushSGBBorder - call SGBBorder_PushBGPals - call SGB_ClearVRAM - ld hl, MaskEnCancelPacket - call _PushSGBPals -.skip - pop af - ld [wJoypadFlags], a - ret - -_InitSGBBorderPals: - ld hl, .PacketPointerTable - ld c, 9 - -.loop - push bc - ld a, [hli] - push hl - ld h, [hl] - ld l, a - call _PushSGBPals - pop hl - inc hl - pop bc - dec c - jr nz, .loop - ret - -.PacketPointerTable: - dw MaskEnFreezePacket - dw DataSndPacket1 - dw DataSndPacket2 - dw DataSndPacket3 - dw DataSndPacket4 - dw DataSndPacket5 - dw DataSndPacket6 - dw DataSndPacket7 - dw DataSndPacket8 - -UpdateSGBBorder: - ld a, [wSGB] - ret z - di - xor a - ldh [rJOYP], a - ld hl, MaskEnFreezePacket - call _PushSGBPals - call PushSGBBorder - ld hl, MaskEnCancelPacket - call _PushSGBPals - ei - ret - -PushSGBBorder: - call .LoadSGBBorderPointers - push de - call SGBBorder_YetMorePalPushing - pop hl - call SGBBorder_MorePalPushing - ret - -.LoadSGBBorderPointers: - ld a, [wce5f] - bit 3, a - jr nz, .spaceworld_border - -; load alternate border - ld hl, UnusedSGBBorderGFX - ld de, UnusedSGBBorderTilemap - ret - -.spaceworld_border - ld hl, SGBBorderGFX - ld de, SGBBorderTilemap - ret - -SGB_ClearVRAM: - ld hl, vChars0 - ld bc, $2000 - xor a - call ByteFill - ret - -PushSGBBorderPalsAndWait: - ld hl, MltReq2Packet - call _PushSGBPals - call SGBDelayCycles - ldh a, [rJOYP] - and $3 - cp $3 - jr nz, .carry - ld a, $20 - ldh [rJOYP], a - ldh a, [rJOYP] - ldh a, [rJOYP] - call SGBDelayCycles - call SGBDelayCycles - ld a, $30 - ldh [rJOYP], a - call SGBDelayCycles - call SGBDelayCycles - ld a, $10 - ldh [rJOYP], a -rept 6 - ldh a, [rJOYP] -endr - call SGBDelayCycles - call SGBDelayCycles - ld a, $30 - ldh [rJOYP], a - ldh a, [rJOYP] - ldh a, [rJOYP] - ldh a, [rJOYP] - call SGBDelayCycles - call SGBDelayCycles - ldh a, [rJOYP] - and $3 - cp $3 - jr nz, .carry - call .FinalPush - and a - ret - -.carry - call .FinalPush - scf - ret - -.FinalPush: - ld hl, MltReq1Packet - call _PushSGBPals - jp SGBDelayCycles - -SGBBorder_PushBGPals: - call DisableLCD - ld a, %11100100 - ldh [rBGP], a - ld hl, SuperPalettes - ld de, vChars1 - ld bc, $1000 - call CopyData - call DrawDefaultTiles - ld a, $e3 - ldh [rLCDC], a - ld hl, PalTrnPacket - call _PushSGBPals - xor a - ldh [rBGP], a - ret - -SGBBorder_MorePalPushing: - call DisableLCD - ld a, %11100100 - ldh [rBGP], a - ld de, vChars1 - ld bc, (6 + SCREEN_WIDTH + 6) * 5 * 2 - call CopyData - ld b, SCREEN_HEIGHT -.loop - push bc - 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, .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, PctTrnPacket - call _PushSGBPals - xor a - ldh [rBGP], a - ret - -SGBBorder_YetMorePalPushing: - call DisableLCD - ld a, $e4 - ldh [rBGP], a - ld de, vChars1 - ld b, $80 -.loop - push bc - ld bc, $10 - call CopyData - ld bc, $10 - call ClearBytes - pop bc - dec b - jr nz, .loop - call DrawDefaultTiles - ld a, $e3 - ldh [rLCDC], a - ld hl, ChrTrnPacket - call _PushSGBPals - xor a - ldh [rBGP], a - ret - -CopyData: - ld a, [hli] - ld [de], a - inc de - dec bc - ld a, c - or b - jr nz, CopyData - ret - -ClearBytes: - xor a - ld [de], a - inc de - dec bc - ld a, c - or b - jr nz, ClearBytes - ret - -DrawDefaultTiles: - hlbgcoord 0, 0 - ld de, BG_MAP_WIDTH - SCREEN_WIDTH - ld a, $80 - ld c, 12 + 1 -.line - ld b, SCREEN_WIDTH -.tile - ld [hli], a - inc a - dec b - jr nz, .tile - add hl, de - dec c - jr nz, .line - ret - -SGBDelayCycles: - ld de, 7000 -.wait - nop - nop - nop - dec de - ld a, d - or e - jr nz, .wait - ret - -INCLUDE "data/sgb/blk_packets.inc" -INCLUDE "data/sgb/pal_packets.inc" -INCLUDE "data/sgb/ctrl_packets.inc" diff --git a/engine/gfx.asm b/engine/gfx.asm deleted file mode 100644 index 5700904..0000000 --- a/engine/gfx.asm +++ /dev/null @@ -1,139 +0,0 @@ -INCLUDE "constants.asm" - -SECTION "engine/gfx.asm", ROMX - -LoadFontGraphics:: - ld de, FontGFX - ld hl, $8800 - lb bc, BANK(FontGFX), ((FontGFX.End - FontGFX) / LEN_1BPP_TILE) - jp Get1bpp -LoadFontExtraGraphicsWithCursor:: - ld de, FontExtraCDEFGHIVSLM_GFX - ld hl, $9620 - lb bc, BANK(FontExtraCDEFGHIVSLM_GFX), ((FontSmallKanaPunctuationGFX.End - FontExtraCDEFGHIVSLM_GFX) / LEN_2BPP_TILE) - call Get2bpp - ld de, BlackTileAndCursor1bppGFX - ld hl, $9600 - lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFX.End - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) - call Get1bpp - jr LoadActiveFrameGraphics -LoadPokemonMenuGraphics:: - ld de, BattleHPBarGFX - ld hl, $9600 - lb bc, BANK(BattleHPBarGFX), ((LevelUpGFX.End - BattleHPBarGFX) / LEN_2BPP_TILE) - call Get2bpp - jr LoadActiveFrameGraphics -LoadToolgearGraphicsDebug:: - call LoadActiveFrameGraphics - ld hl, $d153 - bit 0, [hl] - jr z, .loadToolgearGraphics - ld hl, $9660 - ld de, FontGFX + (("0" - "ア") * $08) - lb bc, BANK(FontGFX), ("9" - "0" + 1) - call Get1bpp - ld hl, $9700 - ld de, FontExtraAB_GFX - lb bc, BANK(FontExtraAB_GFX), ("F" - "A" + 1) - call Get2bpp - ret -.loadToolgearGraphics:: - ld hl, $9660 - ld de, FontGFX + (("0" - "ア") * $08) - lb bc, BANK(FontGFX), ("9" - "0" + 1) - call Get1bpp - ld hl, $9700 - ld de, TrainerCardColonGFX - lb bc, BANK(TrainerCardColonGFX), 1 ; tile - call Get2bpp - ld hl, $9710 - ld de, HUD_GFX - lb bc, BANK(HUD_GFX), ((HUD_GFX.End - HUD_GFX) / LEN_2BPP_TILE) - call Get2bpp - ret -LoadActiveFrameGraphics:: - ld a, [wActiveFrame] - ld bc, (FrameGFX.FirstEntryEnd - FrameGFX) - ld hl, FrameGFX - call AddNTimes - ld d, h - ld e, l - ld hl, $9790 - lb bc, BANK(FrameGFX), ((FrameGFX.FirstEntryEnd - FrameGFX) / LEN_1BPP_TILE) - call Get1bpp - ld hl, $97f0 - ld de, EmptyTile1bppGFX - lb bc, BANK(EmptyTile1bppGFX), ((EmptyTile1bppGFX.End - EmptyTile1bppGFX) / LEN_1BPP_TILE) - call Get1bpp - ret -LoadPokeDexGraphics:: - call LoadPokemonMenuGraphics - ld de, PokedexGFX - ld hl, $9600 - lb bc, BANK(PokedexGFX), ((PokedexGFX.End - PokedexGFX) / LEN_2BPP_TILE + 5) ; copies first 5 tiles of TownMapGFX - call Get2bpp - ld de, PokeBallsGFX - ld hl, $9720 - lb bc, BANK(PokeBallsGFX), 1 ; 1 of 4 tiles - jp Get2bpp -LoadBattleGraphics:: - ld de, BattleHPBarGFX - ld hl, $9600 - lb bc, BANK(BattleHPBarGFX), ((BattleHPBarGFX.End - BattleHPBarGFX) / LEN_2BPP_TILE) - call Get2bpp - ld hl, $9700 - ld de, BattleMarkersGFX - lb bc, BANK(BattleMarkersGFX), ((BattleMarkersGFX.End - BattleMarkersGFX) / LEN_2BPP_TILE) - call Get2bpp - call LoadActiveFrameGraphics - ld de, HpExpBarParts0GFX - ld hl, $96c0 - lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFX.End - HpExpBarParts0GFX) / LEN_1BPP_TILE) - call Get1bpp - ld de, HpExpBarParts1GFX - ld hl, $9730 - lb bc, BANK(HpExpBarParts1GFX), ((HpExpBarParts3GFX.End - HpExpBarParts1GFX) / LEN_1BPP_TILE) - call Get1bpp - ld de, ExpBarGFX - ld hl, $9550 - lb bc, BANK(ExpBarGFX), ((ExpBarGFX.End - ExpBarGFX) / LEN_2BPP_TILE) - call Get2bpp - ret -LoadPokemonStatsGraphics:: - call LoadPokemonMenuGraphics - ld de, HpExpBarParts0GFX - ld hl, $96c0 - lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFX.End - HpExpBarParts0GFX) / LEN_1BPP_TILE) - call Get1bpp - ld de, HpExpBarParts1GFX - ld hl, $9780 - lb bc, BANK(HpExpBarParts1GFX), 1 ; 1 of 6 tiles - call Get1bpp - ld de, HpExpBarParts2GFX - ld hl, $9760 - lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts2GFX.End - HpExpBarParts2GFX) / LEN_1BPP_TILE) - call Get1bpp - ld de, ExpBarGFX - ld hl, $9550 - lb bc, BANK(ExpBarGFX), ((ExpBarGFX.End - ExpBarGFX) / LEN_2BPP_TILE) - call Get2bpp -LoadOnlyPokemonStatsGraphics:: - ld de, StatsGFX - ld hl, $9310 - lb bc, BANK(StatsGFX), ((StatsGFX.End - StatsGFX) / LEN_2BPP_TILE) - call Get2bpp - ret -LoadBackpackGraphics:: - ld de, BlackTileAndCursor1bppGFX - ld hl, $9600 - lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFX.End - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) - call Get1bpp - ld de, PackIconGFX - ld hl, $9620 - lb bc, BANK(PackIconGFX), 12 ; 12 of 15 tiles - call Get2bpp - ld de, FontSmallKanaPunctuationGFX - ld hl, $96e0 - lb bc, BANK(FontSmallKanaPunctuationGFX), ((FontSmallKanaPunctuationGFX.End - FontSmallKanaPunctuationGFX) / LEN_2BPP_TILE) - call Get2bpp - jp LoadActiveFrameGraphics diff --git a/engine/gfx/load_gfx.asm b/engine/gfx/load_gfx.asm new file mode 100644 index 0000000..c628c67 --- /dev/null +++ b/engine/gfx/load_gfx.asm @@ -0,0 +1,139 @@ +INCLUDE "constants.asm" + +SECTION "engine/gfx/load_gfx.asm", ROMX + +LoadFontGraphics:: + ld de, FontGFX + ld hl, $8800 + lb bc, BANK(FontGFX), ((FontGFX.End - FontGFX) / LEN_1BPP_TILE) + jp Get1bpp +LoadFontExtraGraphicsWithCursor:: + ld de, FontExtraCDEFGHIVSLM_GFX + ld hl, $9620 + lb bc, BANK(FontExtraCDEFGHIVSLM_GFX), ((FontSmallKanaPunctuationGFX.End - FontExtraCDEFGHIVSLM_GFX) / LEN_2BPP_TILE) + call Get2bpp + ld de, BlackTileAndCursor1bppGFX + ld hl, $9600 + lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFX.End - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) + call Get1bpp + jr LoadActiveFrameGraphics +LoadPokemonMenuGraphics:: + ld de, BattleHPBarGFX + ld hl, $9600 + lb bc, BANK(BattleHPBarGFX), ((LevelUpGFX.End - BattleHPBarGFX) / LEN_2BPP_TILE) + call Get2bpp + jr LoadActiveFrameGraphics +LoadToolgearGraphicsDebug:: + call LoadActiveFrameGraphics + ld hl, $d153 + bit 0, [hl] + jr z, .loadToolgearGraphics + ld hl, $9660 + ld de, FontGFX + (("0" - "ア") * $08) + lb bc, BANK(FontGFX), ("9" - "0" + 1) + call Get1bpp + ld hl, $9700 + ld de, FontExtraAB_GFX + lb bc, BANK(FontExtraAB_GFX), ("F" - "A" + 1) + call Get2bpp + ret +.loadToolgearGraphics:: + ld hl, $9660 + ld de, FontGFX + (("0" - "ア") * $08) + lb bc, BANK(FontGFX), ("9" - "0" + 1) + call Get1bpp + ld hl, $9700 + ld de, TrainerCardColonGFX + lb bc, BANK(TrainerCardColonGFX), 1 ; tile + call Get2bpp + ld hl, $9710 + ld de, HUD_GFX + lb bc, BANK(HUD_GFX), ((HUD_GFX.End - HUD_GFX) / LEN_2BPP_TILE) + call Get2bpp + ret +LoadActiveFrameGraphics:: + ld a, [wActiveFrame] + ld bc, (FrameGFX.FirstEntryEnd - FrameGFX) + ld hl, FrameGFX + call AddNTimes + ld d, h + ld e, l + ld hl, $9790 + lb bc, BANK(FrameGFX), ((FrameGFX.FirstEntryEnd - FrameGFX) / LEN_1BPP_TILE) + call Get1bpp + ld hl, $97f0 + ld de, EmptyTile1bppGFX + lb bc, BANK(EmptyTile1bppGFX), ((EmptyTile1bppGFX.End - EmptyTile1bppGFX) / LEN_1BPP_TILE) + call Get1bpp + ret +LoadPokeDexGraphics:: + call LoadPokemonMenuGraphics + ld de, PokedexGFX + ld hl, $9600 + lb bc, BANK(PokedexGFX), ((PokedexGFX.End - PokedexGFX) / LEN_2BPP_TILE + 5) ; copies first 5 tiles of TownMapGFX + call Get2bpp + ld de, PokeBallsGFX + ld hl, $9720 + lb bc, BANK(PokeBallsGFX), 1 ; 1 of 4 tiles + jp Get2bpp +LoadBattleGraphics:: + ld de, BattleHPBarGFX + ld hl, $9600 + lb bc, BANK(BattleHPBarGFX), ((BattleHPBarGFX.End - BattleHPBarGFX) / LEN_2BPP_TILE) + call Get2bpp + ld hl, $9700 + ld de, BattleMarkersGFX + lb bc, BANK(BattleMarkersGFX), ((BattleMarkersGFX.End - BattleMarkersGFX) / LEN_2BPP_TILE) + call Get2bpp + call LoadActiveFrameGraphics + ld de, HpExpBarParts0GFX + ld hl, $96c0 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFX.End - HpExpBarParts0GFX) / LEN_1BPP_TILE) + call Get1bpp + ld de, HpExpBarParts1GFX + ld hl, $9730 + lb bc, BANK(HpExpBarParts1GFX), ((HpExpBarParts3GFX.End - HpExpBarParts1GFX) / LEN_1BPP_TILE) + call Get1bpp + ld de, ExpBarGFX + ld hl, $9550 + lb bc, BANK(ExpBarGFX), ((ExpBarGFX.End - ExpBarGFX) / LEN_2BPP_TILE) + call Get2bpp + ret +LoadPokemonStatsGraphics:: + call LoadPokemonMenuGraphics + ld de, HpExpBarParts0GFX + ld hl, $96c0 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts0GFX.End - HpExpBarParts0GFX) / LEN_1BPP_TILE) + call Get1bpp + ld de, HpExpBarParts1GFX + ld hl, $9780 + lb bc, BANK(HpExpBarParts1GFX), 1 ; 1 of 6 tiles + call Get1bpp + ld de, HpExpBarParts2GFX + ld hl, $9760 + lb bc, BANK(HpExpBarParts0GFX), ((HpExpBarParts2GFX.End - HpExpBarParts2GFX) / LEN_1BPP_TILE) + call Get1bpp + ld de, ExpBarGFX + ld hl, $9550 + lb bc, BANK(ExpBarGFX), ((ExpBarGFX.End - ExpBarGFX) / LEN_2BPP_TILE) + call Get2bpp +LoadOnlyPokemonStatsGraphics:: + ld de, StatsGFX + ld hl, $9310 + lb bc, BANK(StatsGFX), ((StatsGFX.End - StatsGFX) / LEN_2BPP_TILE) + call Get2bpp + ret +LoadBackpackGraphics:: + ld de, BlackTileAndCursor1bppGFX + ld hl, $9600 + lb bc, BANK(BlackTileAndCursor1bppGFX), ((BlackTileAndCursor1bppGFX.End - BlackTileAndCursor1bppGFX) / LEN_1BPP_TILE) + call Get1bpp + ld de, PackIconGFX + ld hl, $9620 + lb bc, BANK(PackIconGFX), 12 ; 12 of 15 tiles + call Get2bpp + ld de, FontSmallKanaPunctuationGFX + ld hl, $96e0 + lb bc, BANK(FontSmallKanaPunctuationGFX), ((FontSmallKanaPunctuationGFX.End - FontSmallKanaPunctuationGFX) / LEN_2BPP_TILE) + call Get2bpp + jp LoadActiveFrameGraphics diff --git a/engine/gfx/set_title_decoration.asm b/engine/gfx/set_title_decoration.asm new file mode 100644 index 0000000..1a4f2fe --- /dev/null +++ b/engine/gfx/set_title_decoration.asm @@ -0,0 +1,33 @@ +INCLUDE "constants.asm" + +SECTION "engine/gfx/set_title_decoration.asm", ROMX + +SetTitleBGDecorationBorder: + ld de, TitleBGDecorationBorder + ld hl, vChars2 + $500 + lb bc, BANK(TitleBGDecorationBorder), 9 + call Request2bpp + +; top row + coord hl, 0, 8 + ld b, $50 + call .PlaceRow + +; bottom row + coord hl, 0, 16 + ld b, $54 + call .PlaceRow + ret + +.PlaceRow: + xor a + ld c, SCREEN_WIDTH +.loop + and $03 + or b + ld [hli], a + inc a + dec c + jr nz, .loop + ret + diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm new file mode 100644 index 0000000..f825127 --- /dev/null +++ b/engine/gfx/sgb_layouts.asm @@ -0,0 +1,897 @@ +INCLUDE "constants.asm" + +SECTION "engine/gfx/sgb_layouts.asm", ROMX + +LoadSGBLayout: + ld a, b + cp $ff + jr nz, .not_ram + ld a, [wccd0] +.not_ram + cp $fc + jp z, SGB_ApplyPartyMenuHPPals + ld l, a + ld h, 0 + add hl, hl + ld de, .Jumptable + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, _LoadSGBLayout_ReturnFromJumpTable + push de + jp hl + +.Jumptable: + dw SGB_BattleGrayscale + dw SGB_BattleColors + dw SGB_TownMap + dw SGB_StatsScreenHPPals + dw SGB_Pokedex + dw SGB_SlotMachine + dw SGB_TitleScreen + dw SGB_GSIntro + dw SGB_Diploma + dw SGB_MapPals + dw SGB_PartyMenu + dw SGB_Evolution + dw SGB_GFIntro + dw SGB_TrainerCard + dw SGB0e + dw SGB_PikachuMinigame + dw SGB_PokedexSelection + dw SGB_Poker + dw SGB12 + dw SGB_TrainerGear + dw SGB_TrainerGearMap + dw SGB_TrainerGearRadio + +SGB_BattleGrayscale: + ld hl, PalPacket_BattleGrayscale + ld de, BlkPacket_Battle + ret + +SGB_BattleColors: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + + ld a, [wca3f] + ld hl, wca02 + call Function9567 + jr c, .sub_92f7 + + ld e, $00 + call Function9599 +.sub_92f7 + ld b, a + ld a, [wca44] + ld hl, wcdd7 + call Function9567 + jr c, .sub_9308 + ld e, $01 + call Function9599 +.sub_9308 + ld c, a + ld hl, wcce2 + ld a, [wccd1] + add $23 + ld [hli], a + inc hl + ld a, [wccd2] + add $23 + ld [hli], a + inc hl + ld a, b + ld [hli], a + inc hl + ld a, c + ld [hl], a + ld hl, wcce1 + ld de, BlkPacket_Battle + ld a, $01 + ld [wccd0], a + ret + +SGB0e: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld hl, wcce2 + ld [hl], $10 + inc hl + inc hl + ld a, [wccd1] + add $23 + ld [hl], a + ld hl, wcce1 + ld de, BlkPacket_98bc + ret + +SGB_TownMap: + ld hl, Data99fc + ld de, BlkPacket_986c + ret + +SGB_StatsScreenHPPals: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld a, [wMonDexIndex] + call Function956d + call Function957e + push af + ld hl, wcce2 + ld a, [wccd9] + add $23 + ld [hli], a + inc hl + pop af + ld [hl], a + ld hl, wcce1 + ld de, BlkPacket_StatsScreen + ret + +SGB_PartyMenu: + ld hl, PalPacket_PartyMenu + ld de, wcce2 + ret + +SGB_Pokedex: + ld hl, PalPacket_Pokedex + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld a, [wMonDexIndex] + call Function956d + ld hl, wcce4 + ld [hl], a + ld hl, wcce1 + ld de, BlkPacket_Pokedex + ret + +SGB_PokedexSelection: + ld hl, PalPacket_99bc + ld de, BlkPacket_986c + ret + +SGB_SlotMachine: + ld hl, PalPacket_SlotMachine + ld de, BlkPacket_SlotMachine + ret + +SGB_TitleScreen: + ld hl, PalPacket_TitleScreen + ld de, BlkPacket_TitleScreen + ret + +SGB_Diploma: + ld hl, PalPacket_9a3c + ld de, BlkPacket_986c + ret + +SGB_GSIntro: + ld b, 0 + ld hl, .BlkPacketTable +rept 4 + add hl, bc +endr + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + ret + +.BlkPacketTable: + dw BlkPacket_986c, PalPacket_GSIntroShellderLapras + dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu + dw BlkPacket_986c, PalPacket_GSIntroStartersTransition + +SGB_GFIntro: + ld hl, PalPacket_GFIntro + ld de, BlkPacket_986c + ld a, $08 + ld [wccd0], a + ret + +SGB_PikachuMinigame: + ld hl, PalPacket_PikachuMinigame + ld de, BlkPacket_986c + ret + +SGB_Poker: + ld hl, BlkPacket_986c + ld de, wc51a + ld bc, PALPACKET_LENGTH + call CopyBytes + ld hl, PalPacket_Poker + ld de, BlkPacket_986c + ret + +SGB_MapPals: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + call GetMapPalsIndex + ld hl, wcce2 + ld [hld], a + ld de, BlkPacket_986c + ld a, $09 + ld [wccd0], a + ret + +SGB_Evolution: + push bc + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + pop bc + ld a, c + and a + ld a, $0e + jr nz, .sub_9437 + ld a, [wccd1] + call Function956d + call Function957e +.sub_9437 + ld [wcce2], a + ld hl, wcce1 + ld de, BlkPacket_986c + ret + +SGB_TrainerCard: + ld hl, PalPacket_9a3c + ld de, BlkPacket_986c + ret + +SGB12: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld hl, BlkPacket_986c + ld de, wccf1 + ld bc, PALPACKET_LENGTH + call CopyBytes + call GetMapPalsIndex + ld hl, wcce2 + ld [hl], a + ld a, [wMonDexIndex] + call Function956d + ld hl, wcce4 + ld [hl], a + ld hl, wccf4 + ld a, $05 + ld [hli], a + ld a, [wMenuBorderLeftCoord] + ld [hli], a + ld a, [wMenuBorderTopCoord] + ld [hli], a + ld a, [wMenuBorderRightCoord] + ld [hli], a + ld a, [wMenuBorderBottomCoord] + ld [hl], a + ld hl, wcce1 + ld de, wccf1 + ret + +SGB_TrainerGear: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld a, $16 + ld [wcce2], a + ld a, $30 + ld [wcce4], a + ld hl, wcce1 + ld de, BlkPacket_TrainerGear + ret + +SGB_TrainerGearMap: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld a, $16 + ld [wcce2], a + ld a, $26 + ld [wcce4], a + ld hl, wcce1 + ld de, BlkPacket_TrainerGear + ret + +SGB_TrainerGearRadio: + ld hl, PalPacket_995c + ld de, wcce1 + ld bc, PALPACKET_LENGTH + call CopyBytes + ld a, $16 + ld [wcce2], a + ld a, $39 + ld [wcce4], a + ld hl, wcce1 + ld de, BlkPacket_TrainerGear + ret + +GetMapPalsIndex: + ld a, [wMapPermissions] + cp ROUTE + jr z, .is_route + cp CAVE + jr z, .is_cave + cp GATE + jr z, .is_gate + cp ENVIRONMENT_5 + jr z, .env5 + cp INDOOR + jr z, .indoors + call Function9527 + jr c, .sub_9524 + call Function9543 + ret + +.indoors + call Function9536 + jr c, .sub_9524 + call Function9543 + ret + +.is_route + call Function9527 + jr c, .sub_9524 + ld a, $00 + ret + +.is_cave + call Function9527 + jr c, .sub_9524 + ld a, $0c + ret + +.is_gate + ld a, $03 + ret + +.env5 + ld a, $04 + ret + +.sub_9524 + ld a, $0d + ret + +Function9527: + ld a, [wTimeOfDay] + and $03 + jr z, .sub_9534 + cp $03 + jr z, .sub_9534 + scf + ret +.sub_9534 + and a + ret + +Function9536: + ld a, [wTimeOfDay] + and $03 + cp $02 + jr nz, .sub_9541 + scf + ret +.sub_9541 + and a + ret + +Function9543: + ld a, [wMapGroup] + ld e, a + ld d, $00 + ld hl, Data954f + add hl, de + ld a, [hl] + ret + +Data954f: + db $01, $07, $0c, $03, $08, $06, $0b, $04 + db $05, $0a, $02, $03, $02, $02, $09, $01 + +_LoadSGBLayout_ReturnFromJumpTable: + push de + call PushSGBPals + pop hl + jp PushSGBPals + +Function9567: + bit 3, a + ld a, $18 + ret nz + ld a, [hl] + +Function956d: + and a + jr z, .sub_957a + ld e, a + ld d, $00 + ld hl, PokemonPalettes + add hl, de + ld a, [hl] + and a + ret +.sub_957a + ld a, $0f + scf + ret + +Function957e: + push bc + push af + ld hl, wPartyMon1DVs + ld a, [wWhichPokemon] + ld bc, $0030 + call AddNTimes + call Function95b0 + ld b, $00 + jr nc, .sub_9595 + ld b, $0a +.sub_9595 + pop af + add b + pop bc + ret + +Function9599: + push bc + push af + ld a, e + and a + ld a, [wcae1] + jr z, .sub_95a4 + srl a +.sub_95a4 + srl a + ld b, $00 + jr nc, .sub_95ac + ld b, $0a +.sub_95ac + pop af + add b + pop bc + ret + +Function95b0: + ld a, [hl] + cp $a0 + jr c, .sub_95ca + ld a, [hli] + and $0f + cp $0a + jr c, .sub_95ca + ld a, [hl] + cp $a0 + jr c, .sub_95ca + ld a, [hl] + and $0f + cp $0a + jr c, .sub_95ca + scf + ret +.sub_95ca + and a + ret + +Function95cc: + ld hl, wcddf + ldh a, [hBattleTurn] + and a + jr nz, .sub_95d7 + ld hl, wca08 +.sub_95d7 + call Function95b0 + ld hl, wcae1 + jr nc, .sub_95ec + ldh a, [hBattleTurn] + and a + jr nz, .sub_95e8 + set 0, [hl] + jr .sub_95f7 +.sub_95e8 + set 1, [hl] + jr .sub_95f7 +.sub_95ec + ldh a, [hBattleTurn] + and a + jr nz, .sub_95f5 + res 0, [hl] + jr .sub_95f7 +.sub_95f5 + res 1, [hl] +.sub_95f7 + ret + +Function95f8: + ld hl, BlkPacket_98fc + ld de, wcce2 + ld bc, $0030 + jp CopyBytes + +SGB_ApplyPartyMenuHPPals: + ld hl, wccd3 + ld a, [wcce1] + ld e, a + ld d, $00 + add hl, de + ld e, l + ld d, h + ld a, [de] + and a + ld e, $05 + jr z, .sub_961d + dec a + ld e, $0a + jr z, .sub_961d + ld e, $0f +.sub_961d + push de + ld hl, wcceb + ld bc, $0006 + ld a, [wcce1] + call AddNTimes + pop de + ld [hl], e + ret + +LoadMagikarpPalettes_Intro: + ld hl, PalPacket_MagikarpIntro + jp PushSGBPals + +LoadForestPalettes2_Intro: + ld hl, BlkPacket_986c + jp PushSGBPals + +LoadVenusaurPalettes_Intro: + ld hl, PalPacket_VenusaurIntro + jp PushSGBPals + +LoadCharizardPalettes_Intro: + ld hl, PalPacket_99bc + jp PushSGBPals + +Function9645: + ld hl, wc51a + jp PushSGBPals + +PushSGBPals: + ld a, [wJoypadFlags] + push af + set 7, a + ld [wJoypadFlags], a + call _PushSGBPals + pop af + ld [wJoypadFlags], a + ret + +_PushSGBPals: + ld a, [hl] + and $7 + ret z + ld b, a +.loop + push bc + xor a + ldh [rJOYP], a + ld a, $30 + ldh [rJOYP], a + ld b, $10 +.loop2 + ld e, $08 + ld a, [hli] + ld d, a +.loop3 + bit 0, d + ld a, $10 + jr nz, .ok + ld a, $20 +.ok + ldh [rJOYP], a + ld a, $30 + ldh [rJOYP], a + rr d + dec e + jr nz, .loop3 + dec b + jr nz, .loop2 + ld a, $20 + ldh [rJOYP], a + ld a, $30 + ldh [rJOYP], a + call SGBDelayCycles + pop bc + dec b + jr nz, .loop + ret + +CheckSGB: + ld a, [wJoypadFlags] + push af + set 7, a + ld [wJoypadFlags], a + + xor a + ldh [rJOYP], a + ld [wSGB], a + call PushSGBBorderPalsAndWait + jr nc, .skip + ld a, 1 + ld [wSGB], a + call _InitSGBBorderPals + call PushSGBBorder + call SGBBorder_PushBGPals + call SGB_ClearVRAM + ld hl, MaskEnCancelPacket + call _PushSGBPals +.skip + pop af + ld [wJoypadFlags], a + ret + +_InitSGBBorderPals: + ld hl, .PacketPointerTable + ld c, 9 + +.loop + push bc + ld a, [hli] + push hl + ld h, [hl] + ld l, a + call _PushSGBPals + pop hl + inc hl + pop bc + dec c + jr nz, .loop + ret + +.PacketPointerTable: + dw MaskEnFreezePacket + dw DataSndPacket1 + dw DataSndPacket2 + dw DataSndPacket3 + dw DataSndPacket4 + dw DataSndPacket5 + dw DataSndPacket6 + dw DataSndPacket7 + dw DataSndPacket8 + +UpdateSGBBorder: + ld a, [wSGB] + ret z + di + xor a + ldh [rJOYP], a + ld hl, MaskEnFreezePacket + call _PushSGBPals + call PushSGBBorder + ld hl, MaskEnCancelPacket + call _PushSGBPals + ei + ret + +PushSGBBorder: + call .LoadSGBBorderPointers + push de + call SGBBorder_YetMorePalPushing + pop hl + call SGBBorder_MorePalPushing + ret + +.LoadSGBBorderPointers: + ld a, [wce5f] + bit 3, a + jr nz, .spaceworld_border + +; load alternate border + ld hl, UnusedSGBBorderGFX + ld de, UnusedSGBBorderTilemap + ret + +.spaceworld_border + ld hl, SGBBorderGFX + ld de, SGBBorderTilemap + ret + +SGB_ClearVRAM: + ld hl, vChars0 + ld bc, $2000 + xor a + call ByteFill + ret + +PushSGBBorderPalsAndWait: + ld hl, MltReq2Packet + call _PushSGBPals + call SGBDelayCycles + ldh a, [rJOYP] + and $3 + cp $3 + jr nz, .carry + ld a, $20 + ldh [rJOYP], a + ldh a, [rJOYP] + ldh a, [rJOYP] + call SGBDelayCycles + call SGBDelayCycles + ld a, $30 + ldh [rJOYP], a + call SGBDelayCycles + call SGBDelayCycles + ld a, $10 + ldh [rJOYP], a +rept 6 + ldh a, [rJOYP] +endr + call SGBDelayCycles + call SGBDelayCycles + ld a, $30 + ldh [rJOYP], a + ldh a, [rJOYP] + ldh a, [rJOYP] + ldh a, [rJOYP] + call SGBDelayCycles + call SGBDelayCycles + ldh a, [rJOYP] + and $3 + cp $3 + jr nz, .carry + call .FinalPush + and a + ret + +.carry + call .FinalPush + scf + ret + +.FinalPush: + ld hl, MltReq1Packet + call _PushSGBPals + jp SGBDelayCycles + +SGBBorder_PushBGPals: + call DisableLCD + ld a, %11100100 + ldh [rBGP], a + ld hl, SuperPalettes + ld de, vChars1 + ld bc, $1000 + call CopyData + call DrawDefaultTiles + ld a, $e3 + ldh [rLCDC], a + ld hl, PalTrnPacket + call _PushSGBPals + xor a + ldh [rBGP], a + ret + +SGBBorder_MorePalPushing: + call DisableLCD + ld a, %11100100 + ldh [rBGP], a + ld de, vChars1 + ld bc, (6 + SCREEN_WIDTH + 6) * 5 * 2 + call CopyData + ld b, SCREEN_HEIGHT +.loop + push bc + 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, .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, PctTrnPacket + call _PushSGBPals + xor a + ldh [rBGP], a + ret + +SGBBorder_YetMorePalPushing: + call DisableLCD + ld a, $e4 + ldh [rBGP], a + ld de, vChars1 + ld b, $80 +.loop + push bc + ld bc, $10 + call CopyData + ld bc, $10 + call ClearBytes + pop bc + dec b + jr nz, .loop + call DrawDefaultTiles + ld a, $e3 + ldh [rLCDC], a + ld hl, ChrTrnPacket + call _PushSGBPals + xor a + ldh [rBGP], a + ret + +CopyData: + ld a, [hli] + ld [de], a + inc de + dec bc + ld a, c + or b + jr nz, CopyData + ret + +ClearBytes: + xor a + ld [de], a + inc de + dec bc + ld a, c + or b + jr nz, ClearBytes + ret + +DrawDefaultTiles: + hlbgcoord 0, 0 + ld de, BG_MAP_WIDTH - SCREEN_WIDTH + ld a, $80 + ld c, 12 + 1 +.line + ld b, SCREEN_WIDTH +.tile + ld [hli], a + inc a + dec b + jr nz, .tile + add hl, de + dec c + jr nz, .line + ret + +SGBDelayCycles: + ld de, 7000 +.wait + nop + nop + nop + dec de + ld a, d + or e + jr nz, .wait + ret + +INCLUDE "data/sgb/blk_packets.inc" +INCLUDE "data/sgb/pal_packets.inc" +INCLUDE "data/sgb/ctrl_packets.inc" + diff --git a/layout.link b/layout.link index 6259b27..471d714 100644 --- a/layout.link +++ b/layout.link @@ -127,9 +127,9 @@ ROMX $02 "engine/trainer_gear.asm@OpenTrainerGear" "gfx.asm@Trainer Gear GFX" "engine/trainer_gear.asm@TrainerGear_RadioText" - "engine/dumps/bank02.asm@SetTitleBGDecorationBorder" + "engine/gfx/set_title_decoration.asm" "gfx.asm@Title Screen BG Decoration Border" - "engine/dumps/bank02.asm@Function928b" + "engine/gfx/sgb_layouts.asm" "gfx.asm@SGB GFX" "slack.asm@Unknownaebc" "slack.asm@Corrupted SGB GFX" @@ -940,7 +940,7 @@ ROMX $3c ROMX $3e org $4000 - "engine/gfx.asm" + "engine/gfx/load_gfx.asm" "gfx.asm@Misc GFX" ROMX $3f -- cgit v1.2.3 From 0f72265c2fb4df1069654ee9e62707398e326649 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 18:05:49 +0700 Subject: Decode SGB system control packets --- data/sgb/ctrl_packets.inc | 142 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 105 insertions(+), 37 deletions(-) diff --git a/data/sgb/ctrl_packets.inc b/data/sgb/ctrl_packets.inc index bcca0ed..b613e7d 100644 --- a/data/sgb/ctrl_packets.inc +++ b/data/sgb/ctrl_packets.inc @@ -1,60 +1,128 @@ -PalTrnPacket: - db $59, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_pal_trn: MACRO + db (SGB_PAL_TRN << 3) + 1 + ds 15 +ENDM -MltReq1Packet: - db $89, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_mlt_req: MACRO + db (SGB_MLT_REG << 3) + 1 + db \1 - 1 + ds 14 +ENDM -MltReq2Packet: - db $89, $01, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_chr_trn: MACRO + db (SGB_CHR_TRN << 3) + 1 + db \1 + (\2 << 1) + ds 14 +ENDM -ChrTrnPacket: - db $99, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_pct_trn: MACRO + db (SGB_PCT_TRN << 3) + 1 + ds 15 +ENDM -PctTrnPacket: - db $a1, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_mask_en: MACRO + db (SGB_MASK_EN << 3) + 1 + db \1 + ds 14 +ENDM -MaskEnFreezePacket: - db $b9, $01, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +sgb_data_snd: MACRO + db (SGB_DATA_SND << 3) + 1 + dw \1 ; address + db \2 ; bank + db \3 ; length (1-11) +ENDM -MaskEnCancelPacket: - db $b9, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +PalTrnPacket: sgb_pal_trn +MltReq1Packet: sgb_mlt_req 1 +MltReq2Packet: sgb_mlt_req 2 +ChrTrnPacket: sgb_chr_trn 0, 0 +PctTrnPacket: sgb_pct_trn + +MaskEnFreezePacket: sgb_mask_en 1 +MaskEnCancelPacket: sgb_mask_en 0 + +; These are packets containing SNES code. +; This set of packets is found in several Japanese SGB-compatible titles. +; It appears to be part of NCL's SGB devkit. DataSndPacket1: - db $79, $5d, $08, $00, $0b, $8c, $d0, $f4 - db $60, $00, $00, $00, $00, $00, $00, $00 + sgb_data_snd $085d, $0, 11 + db $8c ; cpx #$8c (2) + db $d0, $f4 ; bne -$0c + db $60 ; rts + ds 7 DataSndPacket2: - db $79, $52, $08, $00, $0b, $a9, $e7, $9f - db $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0 + sgb_data_snd $0852, $0, 11 + db $a9, $e7 ; lda #$e7 + db $9f, $01, $c0, $7e ; sta $7ec001, x + db $e8 ; inx + db $e8 ; inx + db $e8 ; inx + db $e8 ; inx + db $e0 ; cpx #$8c (1) DataSndPacket3: - db $79, $47, $08, $00, $0b, $c4, $d0, $16 - db $a5, $cb, $c9, $05, $d0, $10, $a2, $28 + sgb_data_snd $0847, $0, 11 + db $c4 ; cmp #$c4 (2) + db $d0, $16 ; bne +$16 + db $a5 ; lda dp + db $cb ; wai + db $c9, $05 ; cmp #$05 + db $d0, $10 ; bne +$10 + db $a2, $28 ; ldx #$28 DataSndPacket4: - db $79, $3c, $08, $00, $0b, $f0, $12, $a5 - db $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9 + sgb_data_snd $083c, $0, 11 + db $f0, $12 ; beq +$12 + db $a5 ; lda dp + db $c9, $c9 ; cmp #$c9 + db $c8 ; iny + db $d0, $1c ; bne +$1c + db $a5 ; lda dp + db $ca ; dex + db $c9 ; cmp #$c4 (1) DataSndPacket5: - db $79, $31, $08, $00, $0b, $0c, $a5, $ca - db $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e + sgb_data_snd $0831, $0, 11 + dbw $0c, $caa5 ; tsb $caa5 + db $c9, $7e ; cmp #$7e + db $d0, $06 ; bne +$06 + db $a5 ; lda dp + db $cb ; wai + db $c9, $7e ; cmp #$7e DataSndPacket6: - db $79, $26, $08, $00, $0b, $39, $cd, $48 - db $0c, $d0, $34, $a5, $c9, $c9, $80, $d0 + sgb_data_snd $0826, $0, 11 + db $39 ; bne +$39 (2) + dbw $cd, $0c48 ; cmp $0c48 + db $d0, $34 ; bne +$34 + db $a5 ; lda dp + db $c9, $c9 ; cmp #$c9 + db $80, $d0 ; bra -$30 DataSndPacket7: - db $79, $1b, $08, $00, $0b, $ea, $ea, $ea - db $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0 + sgb_data_snd $081b, $0, 11 + db $ea ; nop + db $ea ; nop + db $ea ; nop + db $ea ; nop + db $ea ; nop + ; $0820: + db $a9, $01 ; lda #01 + dbw $cd, $0c4f ; cmp $c4f + db $d0 ; bne +$39 (1) DataSndPacket8: - db $79, $10, $08, $00, $0b, $4c, $20, $08 - db $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea + sgb_data_snd $0810, $0, 11 + dbw $4c, $0820 ; jmp $0820 + db $ea ; nop + db $ea ; nop + db $ea ; nop + db $ea ; nop + db $ea ; nop + db $60 ; rts + db $ea ; nop + db $ea ; nop -- cgit v1.2.3 From 022ad86db56d2611b40256192d1db1e63a91c9c5 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Mon, 17 May 2021 22:37:27 +0700 Subject: Fix failing build --- Makefile | 4 ++++ gfx/gfx.mk | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 903f5db..af03e9f 100644 --- a/Makefile +++ b/Makefile @@ -124,6 +124,10 @@ $(BUILD)/%.1bpp: %.1bpp.png tools/gfx | $$(dir $$@) $(BUILD)/%.tilemap: %.png | $$(dir $$@) $(RGBGFX) -t $@ $< +.PRECIOUS: $(BUILD)/%.sgb.tilemap +$(BUILD)/%.sgb.tilemap: %.bin | $$(dir $$@) + tr < $< -d '\000' > $@ + .PRECIOUS: %/ %/: mkdir -p $@ diff --git a/gfx/gfx.mk b/gfx/gfx.mk index 555ae2d..afc5d10 100644 --- a/gfx/gfx.mk +++ b/gfx/gfx.mk @@ -29,6 +29,3 @@ $(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' > $@ -- cgit v1.2.3 From ee0e7ea5a0b3d93d6bb228fe60df79f9dba966e4 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:00:46 +0700 Subject: Decode SGB blk_packets --- data/sgb/blk_packets.inc | 91 ++++++++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/data/sgb/blk_packets.inc b/data/sgb/blk_packets.inc index 136f73d..1ca8e34 100644 --- a/data/sgb/blk_packets.inc +++ b/data/sgb/blk_packets.inc @@ -1,56 +1,73 @@ +attr_blk: MACRO + db (SGB_ATTR_BLK << 3) + ((\1 * 6) / 16 + 1) + db \1 +ENDM + +attr_blk_data: MACRO + db \1 ; which regions are affected + db \2 + (\3 << 2) + (\4 << 4) ; palette for each region + db \5, \6, \7, \8 ; x1, y1, x2, y2 +ENDM + BlkPacket_986c: - db $21, $01, $03, $00, $00, $00, $13, $11 - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %011, 0,0,0, 00,00, 19,17 + ds 8 BlkPacket_GSIntroJigglypuffPikachu: - db $21, $01, $07, $05, $00, $0a, $13, $0d - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %111, 1,1,0, 00,10, 19,13 + ds 8 BlkPacket_Battle: - db $22, $05, $07, $0a, $00, $0c, $13, $11 - db $03, $05, $01, $00, $0a, $03, $03, $00 - -Data989c: - db $0a, $08, $13, $0a, $03, $0a, $00, $04 - db $08, $0b, $03, $0f, $0b, $00, $13, $07 + attr_blk 5 + attr_blk_data %111, 2,2,0, 00,12, 19,17 + attr_blk_data %011, 1,1,0, 01,00, 10,03 + attr_blk_data %011, 0,0,0, 10,08, 19,10 + attr_blk_data %011, 2,2,0, 00,04, 08,11 + attr_blk_data %011, 3,3,0, 11,00, 19,07 BlkPacket_StatsScreen: - db $21, $01, $07, $05, $00, $01, $07, $07 - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %111, 1,1,0, 00,01, 07,07 + ds 8 -BlkPacket_98bc: - db $21, $01, $07, $05, $0b, $01, $13, $02 - db $00, $00, $00, $00, $00, $00, $00, $00 +BlkPacket_MoveList: + attr_blk 1 + attr_blk_data %111, 1,1,0, 11,01, 19,02 + ds 8 BlkPacket_Pokedex: - db $21, $01, $07, $05, $01, $01, $08, $08 - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %111, 1,1,0, 01,01, 08,08 + ds 8 BlkPacket_SlotMachine: - db $22, $05, $03, $05, $00, $00, $13, $0b - db $03, $0a, $00, $04, $13, $09, $02, $0f - -Data98ec: - db $00, $06, $13, $07, $03, $00, $04, $04 - db $0f, $09, $03, $00, $00, $0c, $13, $11 + attr_blk 5 + attr_blk_data %011, 1,1,0, 00,00, 19,11 + attr_blk_data %011, 2,2,0, 00,04, 19,09 + attr_blk_data %010, 3,3,0, 00,06, 19,07 + attr_blk_data %011, 0,0,0, 04,04, 15,09 + attr_blk_data %011, 0,0,0, 00,12, 19,17 BlkPacket_98fc: - db $23, $07, $07, $10, $00, $00, $02, $0c - db $02, $00, $0c, $00, $12, $01, $02, $00 - -Data990c: - db $0c, $02, $12, $03, $02, $00, $0c, $04 - db $12, $05, $02, $00, $0c, $06, $12, $07 - -Data991c: - db $02, $00, $0c, $08, $12, $09, $02, $00 - db $0c, $0a, $12, $0b, $00, $00, $00, $00 + attr_blk 7 + attr_blk_data %111, 0,0,1, 00,00, 02,12 + attr_blk_data %010, 0,0,0, 12,00, 18,01 + attr_blk_data %010, 0,0,0, 12,02, 18,03 + attr_blk_data %010, 0,0,0, 12,04, 18,05 + attr_blk_data %010, 0,0,0, 12,06, 18,07 + attr_blk_data %010, 0,0,0, 12,08, 18,09 + attr_blk_data %010, 0,0,0, 12,10, 18,11 + ds 4 BlkPacket_TrainerGear: - db $21, $01, $07, $10, $00, $00, $13, $02 - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %111, 0,0,1, 00,00, 19,02 + ds 8 BlkPacket_TitleScreen: - db $21, $01, $07, $10, $00, $00, $13, $05 - db $00, $00, $00, $00, $00, $00, $00, $00 + attr_blk 1 + attr_blk_data %111, 0,0,1, 00,00, 19,05 + ds 8 -- cgit v1.2.3 From 88b53cce31314345068ba89226ca68a22e74db4c Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:01:10 +0700 Subject: label SGB layout $0E --- constants/sgb_constants.asm | 2 +- engine/gfx/sgb_layouts.asm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/constants/sgb_constants.asm b/constants/sgb_constants.asm index f18ba2c..5f4f209 100644 --- a/constants/sgb_constants.asm +++ b/constants/sgb_constants.asm @@ -14,7 +14,7 @@ const SGB_EVOLUTION const SGB_GF_INTRO const SGB_TRAINER_CARD - const SGB_0E + const SGB_MOVE_LIST const SGB_PIKACHU_MINIGAME const SGB_POKEDEX_SELECTION const SGB_POKER diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index f825127..5ab40e1 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -37,7 +37,7 @@ LoadSGBLayout: dw SGB_Evolution dw SGB_GFIntro dw SGB_TrainerCard - dw SGB0e + dw SGB_MoveList dw SGB_PikachuMinigame dw SGB_PokedexSelection dw SGB_Poker @@ -94,7 +94,7 @@ SGB_BattleColors: ld [wccd0], a ret -SGB0e: +SGB_MoveList: ld hl, PalPacket_995c ld de, wcce1 ld bc, PALPACKET_LENGTH @@ -107,7 +107,7 @@ SGB0e: add $23 ld [hl], a ld hl, wcce1 - ld de, BlkPacket_98bc + ld de, BlkPacket_MoveList ret SGB_TownMap: -- cgit v1.2.3 From eb8baca9afb7a0981b22400a067c57dd46d84a0a Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:30:43 +0700 Subject: PredefPals defined as SuperPalettes --- constants/palette_constants.asm | 1 + constants/sgb_constants.asm | 83 ----------------------------------------- 2 files changed, 1 insertion(+), 83 deletions(-) diff --git a/constants/palette_constants.asm b/constants/palette_constants.asm index 4453f18..4d3f7d6 100755 --- a/constants/palette_constants.asm +++ b/constants/palette_constants.asm @@ -1,3 +1,4 @@ +; SuperPalettes indexes (see data/super_palettes.inc) const_def const PAL_ROUTE ; 00 const PAL_TOWN_01 ; 01 diff --git a/constants/sgb_constants.asm b/constants/sgb_constants.asm index 5f4f209..037a9f6 100644 --- a/constants/sgb_constants.asm +++ b/constants/sgb_constants.asm @@ -26,89 +26,6 @@ SGB_PARTY_MENU_HP_PALS EQU -4 SGB_RAM EQU -1 -; PredefPals indexes (see gfx/sgb/predef.pal) -; GetPredefPal arguments (see engine/gfx/color.asm) - const_def - const PREDEFPAL_00 - const PREDEFPAL_PALLET - const PREDEFPAL_VIRIDIAN - const PREDEFPAL_PEWTER - const PREDEFPAL_CERULEAN - const PREDEFPAL_LAVENDER - const PREDEFPAL_VERMILION - const PREDEFPAL_CELADON - const PREDEFPAL_FUCHSIA - const PREDEFPAL_CINNABAR - const PREDEFPAL_SAFFRON - const PREDEFPAL_INDIGO - const PREDEFPAL_NEW_BARK - const PREDEFPAL_CHERRYGROVE - const PREDEFPAL_VIOLET - const PREDEFPAL_AZALEA - const PREDEFPAL_GOLDENROD - const PREDEFPAL_ECRUTEAK - const PREDEFPAL_OLIVINE - const PREDEFPAL_CIANWOOD - const PREDEFPAL_MAHOGANY - const PREDEFPAL_BLACKTHORN - const PREDEFPAL_LAKE_OF_RAGE - const PREDEFPAL_SILVER_CAVE - const PREDEFPAL_DUNGEONS - const PREDEFPAL_NITE - const PREDEFPAL_BLACKOUT - const PREDEFPAL_DIPLOMA ; RB_MEWMON - const PREDEFPAL_TRADE_TUBE ; RB_BLUEMON - const PREDEFPAL_POKEDEX ; RB_REDMON - const PREDEFPAL_RB_CYANMON - const PREDEFPAL_RB_PURPLEMON - const PREDEFPAL_RB_BROWNMON - const PREDEFPAL_RB_GREENMON - const PREDEFPAL_RB_PINKMON - const PREDEFPAL_RB_YELLOWMON - const PREDEFPAL_CGB_BADGE ; RB_GRAYMON - const PREDEFPAL_BETA_SHINY_MEWMON - const PREDEFPAL_BETA_SHINY_BLUEMON - const PREDEFPAL_BETA_SHINY_REDMON - const PREDEFPAL_BETA_SHINY_CYANMON - const PREDEFPAL_BETA_SHINY_PURPLEMON - const PREDEFPAL_BETA_SHINY_BROWNMON - const PREDEFPAL_BETA_SHINY_GREENMON - const PREDEFPAL_BETA_SHINY_PINKMON - const PREDEFPAL_BETA_SHINY_YELLOWMON - const PREDEFPAL_PARTY_ICON ; BETA_SHINY_GRAYMON - const PREDEFPAL_HP_GREEN - const PREDEFPAL_HP_YELLOW - const PREDEFPAL_HP_RED - const PREDEFPAL_TRAINER_GEAR - const PREDEFPAL_BETA_LOGO_1 - const PREDEFPAL_BETA_LOGO_2 - const PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO - const PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS - const PREDEFPAL_BETA_INTRO_LAPRAS - const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG - const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB - const PREDEFPAL_GS_INTRO_STARTERS_TRANSITION - const PREDEFPAL_BETA_INTRO_VENUSAUR - const PREDEFPAL_PACK ; GS_INTRO_CHARIZARD - const PREDEFPAL_SLOT_MACHINE_0 - const PREDEFPAL_SLOT_MACHINE_1 - const PREDEFPAL_SLOT_MACHINE_2 - const PREDEFPAL_SLOT_MACHINE_3 - const PREDEFPAL_BETA_POKER_0 - const PREDEFPAL_BETA_POKER_1 - const PREDEFPAL_BETA_POKER_2 - const PREDEFPAL_BETA_POKER_3 - const PREDEFPAL_BETA_RADIO - const PREDEFPAL_BETA_TRAINER_GEAR - const PREDEFPAL_47 - const PREDEFPAL_GS_TITLE_SCREEN_0 - const PREDEFPAL_GS_TITLE_SCREEN_1 - const PREDEFPAL_GS_TITLE_SCREEN_2 - const PREDEFPAL_GS_TITLE_SCREEN_3 - const PREDEFPAL_UNOWN_PUZZLE - const PREDEFPAL_4D - const PREDEFPAL_GAMEFREAK_LOGO - ; SGB system command codes ; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_System_Command_Table const_def -- cgit v1.2.3 From 8a43aebe6e65e3d472085fb80c150d988075113a Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:35:33 +0700 Subject: Decode SGB pal_packets --- data/sgb/pal_packets.inc | 65 +++++++++++++++++++--------------------------- engine/gfx/sgb_layouts.asm | 10 +++---- 2 files changed, 32 insertions(+), 43 deletions(-) diff --git a/data/sgb/pal_packets.inc b/data/sgb/pal_packets.inc index 8537072..510cc04 100644 --- a/data/sgb/pal_packets.inc +++ b/data/sgb/pal_packets.inc @@ -1,68 +1,57 @@ +sgb_pal_set: MACRO + db (SGB_PAL_SET << 3) + 1 + dw PAL_\1, PAL_\2, PAL_\3, PAL_\4 + ds 7 +ENDM + PalPacket_Poker: - db $51, $35, $00, $36, $00, $37, $00, $38 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set POKER_1, POKER_2, POKER_3, POKER_4 PalPacket_995c: - db $51, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set ROUTE, ROUTE, ROUTE, ROUTE PalPacket_GSIntroShellderLapras: - db $51, $2a, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set INTRO_WATER, ROUTE, ROUTE, ROUTE PalPacket_MagikarpIntro: - db $51, $2b, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set INTRO_LAPRAS, ROUTE, ROUTE, ROUTE PalPacket_GSIntroJigglypuffPikachu: - db $51, $2c, $00, $2d, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set INTRO_FOREST, INTRO_JIGGLYPUFF_PIKACHU, ROUTE, ROUTE -PalPacket_GSIntroStartersTransition: - db $51, $2e, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +PalPacket_GSIntroBlastoise: + sgb_pal_set INTRO_BLASTOISE, ROUTE, ROUTE, ROUTE -PalPacket_VenusaurIntro: - db $51, $2f, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +PalPacket_GSIntroVenusaur: + sgb_pal_set INTRO_VENUSAUR, ROUTE, ROUTE, ROUTE -PalPacket_99bc: - db $51, $30, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +PalPacket_GSIntroCharizard: + sgb_pal_set INTRO_CHARIZARD, ROUTE, ROUTE, ROUTE PalPacket_PikachuMinigame: - db $51, $2d, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set INTRO_JIGGLYPUFF_PIKACHU, ROUTE, ROUTE, ROUTE PalPacket_PartyMenu: - db $51, $22, $00, $23, $00, $24, $00, $25 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set SHINY_GRAYMON, GREEN_BAR, YELLOW_BAR, RED_BAR PalPacket_BattleGrayscale: - db $51, $0e, $00, $0e, $00, $0e, $00, $0e - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set BLACK, BLACK, BLACK, BLACK -Data99fc: - db $51, $26, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 +PalPacket_TownMap: + sgb_pal_set TOWN_MAP, ROUTE, ROUTE, ROUTE PalPacket_Pokedex: - db $51, $30, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set INTRO_CHARIZARD, ROUTE, ROUTE, ROUTE PalPacket_SlotMachine: - db $51, $31, $00, $32, $00, $33, $00, $34 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set SLOTS_1, SLOTS_2, SLOTS_3, SLOTS_4 PalPacket_TitleScreen: - db $51, $27, $00, $28, $00, $0f, $00, $13 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set LOGO_1, LOGO_2, MEWMON, PURPLEMON PalPacket_9a3c: - db $51, $0f, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set MEWMON, ROUTE, ROUTE, ROUTE PalPacket_GFIntro: - db $51, $29, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 + sgb_pal_set GAME_FREAK, ROUTE, ROUTE, ROUTE diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index 5ab40e1..07820fc 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -111,7 +111,7 @@ SGB_MoveList: ret SGB_TownMap: - ld hl, Data99fc + ld hl, PalPacket_TownMap ld de, BlkPacket_986c ret @@ -154,7 +154,7 @@ SGB_Pokedex: ret SGB_PokedexSelection: - ld hl, PalPacket_99bc + ld hl, PalPacket_GSIntroCharizard ld de, BlkPacket_986c ret @@ -191,7 +191,7 @@ endr .BlkPacketTable: dw BlkPacket_986c, PalPacket_GSIntroShellderLapras dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu - dw BlkPacket_986c, PalPacket_GSIntroStartersTransition + dw BlkPacket_986c, PalPacket_GSIntroBlastoise SGB_GFIntro: ld hl, PalPacket_GFIntro @@ -559,11 +559,11 @@ LoadForestPalettes2_Intro: jp PushSGBPals LoadVenusaurPalettes_Intro: - ld hl, PalPacket_VenusaurIntro + ld hl, PalPacket_GSIntroVenusaur jp PushSGBPals LoadCharizardPalettes_Intro: - ld hl, PalPacket_99bc + ld hl, PalPacket_GSIntroCharizard jp PushSGBPals Function9645: -- cgit v1.2.3 From 9bde0a9ca74c140ca2ab9c5ac70bd57cf27ae334 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:36:48 +0700 Subject: Decode SGB border palettes Rename UnusedSGBBorder -> AlternateSGBBorder --- engine/gfx/sgb_layouts.asm | 4 +-- gfx/gfx.asm | 14 +++++--- gfx/sgb/sgb_border.pal | 80 +++++++++++++++++++++++++++++++++++++++++++++ gfx/sgb/sgb_border_alt.pal | 80 +++++++++++++++++++++++++++++++++++++++++++++ slack/unknown_a24c.bin | Bin 128 -> 0 bytes slack/unknown_aa9c.bin | Bin 128 -> 0 bytes 6 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 gfx/sgb/sgb_border.pal create mode 100644 gfx/sgb/sgb_border_alt.pal delete mode 100644 slack/unknown_a24c.bin delete mode 100644 slack/unknown_aa9c.bin diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index 07820fc..7097fd7 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -701,8 +701,8 @@ PushSGBBorder: jr nz, .spaceworld_border ; load alternate border - ld hl, UnusedSGBBorderGFX - ld de, UnusedSGBBorderTilemap + ld hl, AlternateSGBBorderGFX + ld de, AlternateSGBBorderTilemap ret .spaceworld_border diff --git a/gfx/gfx.asm b/gfx/gfx.asm index 4fa2472..63c4d03 100644 --- a/gfx/gfx.asm +++ b/gfx/gfx.asm @@ -35,16 +35,20 @@ SECTION "gfx.asm@SGB GFX", ROMX INCLUDE "data/pokemon/palettes.inc" INCLUDE "data/super_palettes.inc" -UnusedSGBBorderTilemap: +AlternateSGBBorderTilemap:: INCBIN "gfx/sgb/sgb_border_alt.sgb.tilemap" -INCBIN "slack/unknown_a24c.bin" -UnusedSGBBorderGFX:: +AlternateSGBBorderPalettes: +INCLUDE "gfx/sgb/sgb_border_alt.pal" + +AlternateSGBBorderGFX:: INCBIN "gfx/sgb/sgb_border_alt.2bpp" -SGBBorderTilemap: +SGBBorderTilemap:: INCBIN "gfx/sgb/sgb_border.sgb.tilemap" -INCBIN "slack/unknown_aa9c.bin" + +SGBBorderPalettes: +INCLUDE "gfx/sgb/sgb_border.pal" SGBBorderGFX:: if DEF(GOLD) diff --git a/gfx/sgb/sgb_border.pal b/gfx/sgb/sgb_border.pal new file mode 100644 index 0000000..a2613db --- /dev/null +++ b/gfx/sgb/sgb_border.pal @@ -0,0 +1,80 @@ + RGB 24, 6, 6 + RGB 0, 0, 0 + RGB 31, 31, 29 + RGB 31, 26, 15 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 31, 26, 15 + RGB 31, 12, 0 + RGB 0, 0, 0 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 6, 31 + RGB 26, 28, 31 + RGB 19, 20, 23 + RGB 0, 0, 0 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 12, 31, 6 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + RGB 18, 24, 18 + diff --git a/gfx/sgb/sgb_border_alt.pal b/gfx/sgb/sgb_border_alt.pal new file mode 100644 index 0000000..acae6d6 --- /dev/null +++ b/gfx/sgb/sgb_border_alt.pal @@ -0,0 +1,80 @@ + RGB 24, 6, 6 + RGB 24, 24, 26 + RGB 14, 15, 20 + RGB 4, 7, 10 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 18, 24, 18 + RGB 31, 26, 15 + RGB 26, 19, 10 + RGB 12, 7, 5 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 18, 6, 31 + RGB 31, 31, 29 + RGB 31, 12, 0 + RGB 0, 0, 0 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 12, 31, 6 + RGB 22, 26, 30 + RGB 16, 17, 21 + RGB 0, 3, 0 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + RGB 31, 31, 25 + diff --git a/slack/unknown_a24c.bin b/slack/unknown_a24c.bin deleted file mode 100644 index 7b7fd54..0000000 Binary files a/slack/unknown_a24c.bin and /dev/null differ diff --git a/slack/unknown_aa9c.bin b/slack/unknown_aa9c.bin deleted file mode 100644 index 9663709..0000000 Binary files a/slack/unknown_aa9c.bin and /dev/null differ -- cgit v1.2.3 From 87d04a1252e9664018b6624ed3eb660efee90092 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:37:05 +0700 Subject: Move super_palettes.inc to data/sgb/ --- data/sgb/super_palettes.inc | 63 +++++++++++++++++++++++++++++++++++++++++++++ data/super_palettes.inc | 63 --------------------------------------------- gfx/gfx.asm | 2 +- 3 files changed, 64 insertions(+), 64 deletions(-) create mode 100644 data/sgb/super_palettes.inc delete mode 100644 data/super_palettes.inc diff --git a/data/sgb/super_palettes.inc b/data/sgb/super_palettes.inc new file mode 100644 index 0000000..5dba6d8 --- /dev/null +++ b/data/sgb/super_palettes.inc @@ -0,0 +1,63 @@ +SuperPalettes:: + RGB 28,28,28, 23,21,16, 15,20,20, 04,04,04 ; ROUTE + RGB 28,28,28, 25,24,29, 15,20,20, 04,04,04 ; TOWN_01 + RGB 28,28,28, 11,31,03, 15,20,20, 04,04,04 ; TOWN_02 + RGB 28,28,28, 18,18,18, 15,20,20, 04,04,04 ; TOWN_03 + RGB 28,28,28, 16,21,30, 15,20,20, 04,04,04 ; TOWN_04 + RGB 28,28,28, 25,19,31, 15,20,20, 04,04,04 ; TOWN_05 + RGB 28,28,28, 31,20,00, 15,20,20, 04,04,04 ; TOWN_06 + RGB 28,28,28, 12,28,22, 15,20,20, 04,04,04 ; TOWN_07 + RGB 28,28,28, 31,17,21, 15,20,20, 04,04,04 ; TOWN_08 + RGB 28,28,28, 26,10,06, 15,20,20, 04,04,04 ; TOWN_09 + RGB 28,28,28, 18,14,31, 15,20,20, 04,04,04 ; TOWN_0A + RGB 28,28,28, 29,26,03, 15,20,20, 04,04,04 ; TOWN_0B + RGB 28,28,28, 21,14,09, 15,20,20, 04,04,04 ; TOWN_0C + RGB 28,28,28, 12,28,22, 15,20,20, 04,04,04 ; TOWN_0D + RGB 28,28,28, 07,07,07, 02,03,03, 04,04,04 ; BLACK + RGB 28,28,28, 30,22,17, 16,14,19, 04,04,04 ; MEWMON + RGB 28,28,28, 18,20,27, 11,15,23, 04,04,04 ; BLUEMON + RGB 28,28,28, 31,20,10, 26,10,06, 04,04,04 ; REDMON + RGB 28,28,28, 21,25,29, 14,19,25, 04,04,04 ; CYANMON + RGB 28,28,28, 27,22,24, 21,15,23, 04,04,04 ; PURPLEMON + RGB 28,28,28, 28,20,15, 21,14,09, 04,04,04 ; BROWNMON + RGB 28,28,28, 20,26,16, 09,20,11, 04,04,04 ; GREENMON + RGB 28,28,28, 30,22,24, 28,15,21, 04,04,04 ; PINKMON + RGB 28,28,28, 31,28,14, 26,20,00, 04,04,04 ; YELLOWMON + RGB 28,28,28, 26,21,22, 15,15,18, 04,04,04 ; GRAYMON + RGB 28,28,28, 23,19,13, 14,12,17, 04,04,04 ; SHINY_MEWMON + RGB 28,28,28, 16,18,21, 10,12,18, 04,04,04 ; SHINY_BLUEMON + RGB 28,28,28, 22,15,16, 17,02,05, 04,04,04 ; SHINY_REDMON + RGB 28,28,28, 15,20,20, 05,16,16, 04,04,04 ; SHINY_CYANMON + RGB 28,28,28, 23,15,19, 14,04,12, 04,04,04 ; SHINY_PURPLEMON + RGB 28,28,28, 20,17,18, 18,13,11, 04,04,04 ; SHINY_BROWNMON + RGB 28,28,28, 23,21,16, 12,12,10, 04,04,04 ; SHINY_GREENMON + RGB 28,28,28, 21,25,29, 30,22,24, 04,04,04 ; SHINY_PINKMON + RGB 28,28,28, 26,23,16, 29,14,09, 04,04,04 ; SHINY_YELLOWMON + RGB 28,28,28, 18,18,18, 10,10,10, 04,04,04 ; SHINY_GRAYMON + RGB 28,28,28, 30,26,15, 09,20,11, 04,04,04 ; GREEN_BAR + RGB 28,28,28, 30,26,15, 26,20,00, 04,04,04 ; YELLOW_BAR + RGB 28,28,28, 30,26,15, 26,10,06, 04,04,04 ; RED_BAR + RGB 28,28,28, 20,26,31, 17,23,10, 04,04,04 ; TOWN_MAP +if DEF(GOLD) + RGB 28,28,28, 24,20,10, 21,00,04, 04,04,04 ; LOGO_1 +else + RGB 28,28,28, 18,18,18, 21,00,04, 04,04,04 ; LOGO_1 +endc + RGB 28,28,28, 31,20,10, 21,00,04, 04,04,04 ; LOGO_2 + RGB 28,28,28, 30,26,16, 16,12,09, 04,04,04 ; GAME_FREAK + RGB 28,28,28, 15,28,26, 12,22,26, 03,16,14 ; INTRO_WATER + RGB 28,28,28, 15,28,26, 23,24,24, 04,04,04 ; INTRO_LAPRAS + RGB 31,31,24, 07,27,19, 26,20,10, 19,12,08 ; INTRO_FOREST + RGB 28,28,28, 31,28,14, 30,22,24, 04,04,04 ; INTRO_JIGGLYPUFF_PIKACHU + RGB 28,28,28, 16,18,21, 10,12,18, 04,04,04 ; INTRO_BLASTOISE + RGB 28,28,28, 23,21,16, 12,12,10, 04,04,04 ; INTRO_VENUSAUR + RGB 28,28,28, 31,20,10, 26,10,06, 04,04,04 ; INTRO_CHARIZARD + RGB 28,28,28, 26,21,22, 26,10,06, 04,04,04 ; SLOTS_1 + RGB 28,28,28, 30,27,04, 24,20,11, 04,04,04 ; SLOTS_2 + RGB 28,28,28, 27,15,21, 24,20,11, 04,04,04 ; SLOTS_3 + RGB 28,28,28, 16,19,29, 24,20,11, 04,04,04 ; SLOTS_4 + RGB 28,28,28, 30,22,24, 18,18,18, 16,10,07 ; POKER_1 + RGB 28,28,28, 21,25,29, 18,18,18, 16,10,07 ; POKER_2 + RGB 28,28,28, 20,26,16, 18,18,18, 16,10,07 ; POKER_3 + RGB 28,28,28, 31,28,14, 18,18,18, 16,10,07 ; POKER_4 + RGB 28,28,28, 18,18,18, 26,10,06, 04,04,04 ; RADIO diff --git a/data/super_palettes.inc b/data/super_palettes.inc deleted file mode 100644 index 5dba6d8..0000000 --- a/data/super_palettes.inc +++ /dev/null @@ -1,63 +0,0 @@ -SuperPalettes:: - RGB 28,28,28, 23,21,16, 15,20,20, 04,04,04 ; ROUTE - RGB 28,28,28, 25,24,29, 15,20,20, 04,04,04 ; TOWN_01 - RGB 28,28,28, 11,31,03, 15,20,20, 04,04,04 ; TOWN_02 - RGB 28,28,28, 18,18,18, 15,20,20, 04,04,04 ; TOWN_03 - RGB 28,28,28, 16,21,30, 15,20,20, 04,04,04 ; TOWN_04 - RGB 28,28,28, 25,19,31, 15,20,20, 04,04,04 ; TOWN_05 - RGB 28,28,28, 31,20,00, 15,20,20, 04,04,04 ; TOWN_06 - RGB 28,28,28, 12,28,22, 15,20,20, 04,04,04 ; TOWN_07 - RGB 28,28,28, 31,17,21, 15,20,20, 04,04,04 ; TOWN_08 - RGB 28,28,28, 26,10,06, 15,20,20, 04,04,04 ; TOWN_09 - RGB 28,28,28, 18,14,31, 15,20,20, 04,04,04 ; TOWN_0A - RGB 28,28,28, 29,26,03, 15,20,20, 04,04,04 ; TOWN_0B - RGB 28,28,28, 21,14,09, 15,20,20, 04,04,04 ; TOWN_0C - RGB 28,28,28, 12,28,22, 15,20,20, 04,04,04 ; TOWN_0D - RGB 28,28,28, 07,07,07, 02,03,03, 04,04,04 ; BLACK - RGB 28,28,28, 30,22,17, 16,14,19, 04,04,04 ; MEWMON - RGB 28,28,28, 18,20,27, 11,15,23, 04,04,04 ; BLUEMON - RGB 28,28,28, 31,20,10, 26,10,06, 04,04,04 ; REDMON - RGB 28,28,28, 21,25,29, 14,19,25, 04,04,04 ; CYANMON - RGB 28,28,28, 27,22,24, 21,15,23, 04,04,04 ; PURPLEMON - RGB 28,28,28, 28,20,15, 21,14,09, 04,04,04 ; BROWNMON - RGB 28,28,28, 20,26,16, 09,20,11, 04,04,04 ; GREENMON - RGB 28,28,28, 30,22,24, 28,15,21, 04,04,04 ; PINKMON - RGB 28,28,28, 31,28,14, 26,20,00, 04,04,04 ; YELLOWMON - RGB 28,28,28, 26,21,22, 15,15,18, 04,04,04 ; GRAYMON - RGB 28,28,28, 23,19,13, 14,12,17, 04,04,04 ; SHINY_MEWMON - RGB 28,28,28, 16,18,21, 10,12,18, 04,04,04 ; SHINY_BLUEMON - RGB 28,28,28, 22,15,16, 17,02,05, 04,04,04 ; SHINY_REDMON - RGB 28,28,28, 15,20,20, 05,16,16, 04,04,04 ; SHINY_CYANMON - RGB 28,28,28, 23,15,19, 14,04,12, 04,04,04 ; SHINY_PURPLEMON - RGB 28,28,28, 20,17,18, 18,13,11, 04,04,04 ; SHINY_BROWNMON - RGB 28,28,28, 23,21,16, 12,12,10, 04,04,04 ; SHINY_GREENMON - RGB 28,28,28, 21,25,29, 30,22,24, 04,04,04 ; SHINY_PINKMON - RGB 28,28,28, 26,23,16, 29,14,09, 04,04,04 ; SHINY_YELLOWMON - RGB 28,28,28, 18,18,18, 10,10,10, 04,04,04 ; SHINY_GRAYMON - RGB 28,28,28, 30,26,15, 09,20,11, 04,04,04 ; GREEN_BAR - RGB 28,28,28, 30,26,15, 26,20,00, 04,04,04 ; YELLOW_BAR - RGB 28,28,28, 30,26,15, 26,10,06, 04,04,04 ; RED_BAR - RGB 28,28,28, 20,26,31, 17,23,10, 04,04,04 ; TOWN_MAP -if DEF(GOLD) - RGB 28,28,28, 24,20,10, 21,00,04, 04,04,04 ; LOGO_1 -else - RGB 28,28,28, 18,18,18, 21,00,04, 04,04,04 ; LOGO_1 -endc - RGB 28,28,28, 31,20,10, 21,00,04, 04,04,04 ; LOGO_2 - RGB 28,28,28, 30,26,16, 16,12,09, 04,04,04 ; GAME_FREAK - RGB 28,28,28, 15,28,26, 12,22,26, 03,16,14 ; INTRO_WATER - RGB 28,28,28, 15,28,26, 23,24,24, 04,04,04 ; INTRO_LAPRAS - RGB 31,31,24, 07,27,19, 26,20,10, 19,12,08 ; INTRO_FOREST - RGB 28,28,28, 31,28,14, 30,22,24, 04,04,04 ; INTRO_JIGGLYPUFF_PIKACHU - RGB 28,28,28, 16,18,21, 10,12,18, 04,04,04 ; INTRO_BLASTOISE - RGB 28,28,28, 23,21,16, 12,12,10, 04,04,04 ; INTRO_VENUSAUR - RGB 28,28,28, 31,20,10, 26,10,06, 04,04,04 ; INTRO_CHARIZARD - RGB 28,28,28, 26,21,22, 26,10,06, 04,04,04 ; SLOTS_1 - RGB 28,28,28, 30,27,04, 24,20,11, 04,04,04 ; SLOTS_2 - RGB 28,28,28, 27,15,21, 24,20,11, 04,04,04 ; SLOTS_3 - RGB 28,28,28, 16,19,29, 24,20,11, 04,04,04 ; SLOTS_4 - RGB 28,28,28, 30,22,24, 18,18,18, 16,10,07 ; POKER_1 - RGB 28,28,28, 21,25,29, 18,18,18, 16,10,07 ; POKER_2 - RGB 28,28,28, 20,26,16, 18,18,18, 16,10,07 ; POKER_3 - RGB 28,28,28, 31,28,14, 18,18,18, 16,10,07 ; POKER_4 - RGB 28,28,28, 18,18,18, 26,10,06, 04,04,04 ; RADIO diff --git a/gfx/gfx.asm b/gfx/gfx.asm index 63c4d03..6e00551 100644 --- a/gfx/gfx.asm +++ b/gfx/gfx.asm @@ -33,7 +33,7 @@ INCBIN "gfx/title/titlebgdecoration.2bpp" SECTION "gfx.asm@SGB GFX", ROMX INCLUDE "data/pokemon/palettes.inc" -INCLUDE "data/super_palettes.inc" +INCLUDE "data/sgb/super_palettes.inc" AlternateSGBBorderTilemap:: INCBIN "gfx/sgb/sgb_border_alt.sgb.tilemap" -- cgit v1.2.3 From 2734e4411c9f1fec63abe662ac5b1b0eef8d8ccd Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 18 May 2021 15:41:08 +0700 Subject: Minor documentation change --- constants/palette_constants.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/constants/palette_constants.asm b/constants/palette_constants.asm index 4d3f7d6..248a40c 100755 --- a/constants/palette_constants.asm +++ b/constants/palette_constants.asm @@ -1,4 +1,4 @@ -; SuperPalettes indexes (see data/super_palettes.inc) +; SuperPalettes indexes (see data/sgb/super_palettes.inc) const_def const PAL_ROUTE ; 00 const PAL_TOWN_01 ; 01 -- cgit v1.2.3 From 5524f730e498462c39d18e685da47872f987b23c Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Sun, 20 Jun 2021 12:23:43 -0400 Subject: Use SGB_RAM constant --- engine/gfx/sgb_layouts.asm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index 7097fd7..ac98865 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -4,7 +4,7 @@ SECTION "engine/gfx/sgb_layouts.asm", ROMX LoadSGBLayout: ld a, b - cp $ff + cp SGB_RAM jr nz, .not_ram ld a, [wccd0] .not_ram @@ -894,4 +894,3 @@ SGBDelayCycles: INCLUDE "data/sgb/blk_packets.inc" INCLUDE "data/sgb/pal_packets.inc" INCLUDE "data/sgb/ctrl_packets.inc" - -- cgit v1.2.3 From f71062bc76bcc2c3cd1fb6a556862887b1fd3943 Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Sun, 20 Jun 2021 12:24:01 -0400 Subject: Use SGB_PARTY_MENU_HP_PALS constant --- engine/gfx/sgb_layouts.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index ac98865..a4faf2a 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -8,7 +8,7 @@ LoadSGBLayout: jr nz, .not_ram ld a, [wccd0] .not_ram - cp $fc + cp SGB_PARTY_MENU_HP_PALS jp z, SGB_ApplyPartyMenuHPPals ld l, a ld h, 0 -- cgit v1.2.3 From 90ed0237ae85aca7b8dd29bfe9118e36be056038 Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Sun, 20 Jun 2021 12:30:46 -0400 Subject: Identify Pokepic function --- engine/dumps/bank09.asm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engine/dumps/bank09.asm b/engine/dumps/bank09.asm index 8851fbb..5466c79 100644 --- a/engine/dumps/bank09.asm +++ b/engine/dumps/bank09.asm @@ -347,14 +347,14 @@ UpdateItemDescription:: callab ShowItemDescription ret -Function2420b: +Pokepic: ld a, $01 ldh [hBGMapMode], a - ld hl, .MenuHeader24262 + ld hl, .PokepicMenuHeader call LoadMenuHeader call MenuBox call UpdateSprites - ld b, SGB_12 + ld b, SGB_POKEPIC call GetSGBLayout xor a ldh [hBGMapMode], a @@ -372,7 +372,7 @@ Function2420b: call Coord2Tile ld a, $80 ldh [hGraphicStartTile], a - ld bc, $0707 + lb bc, 7, 7 predef PlaceGraphic ld a, $01 ldh [hBGMapMode], a @@ -384,7 +384,7 @@ Function2420b: call LoadFont ret -.MenuHeader24262: +.PokepicMenuHeader: db MENU_BACKUP_TILES menu_coords 6, 4, $e, $d dw 0 -- cgit v1.2.3 From b42d1ca1adc5c299ae7833df2ae0f15d4c68b50b Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Sun, 20 Jun 2021 12:31:18 -0400 Subject: Identify SGB_POKEPIC constant --- constants/sgb_constants.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/constants/sgb_constants.asm b/constants/sgb_constants.asm index 037a9f6..dfe0d51 100644 --- a/constants/sgb_constants.asm +++ b/constants/sgb_constants.asm @@ -18,7 +18,7 @@ const SGB_PIKACHU_MINIGAME const SGB_POKEDEX_SELECTION const SGB_POKER - const SGB_12 + const SGB_POKEPIC const SGB_TRAINERGEAR const SGB_TRAINERGEAR_MAP const SGB_TRAINERGEAR_RADIO -- cgit v1.2.3