diff options
author | entrpntr <entrpntr@gmail.com> | 2020-05-22 18:02:48 -0400 |
---|---|---|
committer | entrpntr <entrpntr@gmail.com> | 2020-05-22 18:02:48 -0400 |
commit | 871da041159c18dc3ca502461fef384e3965948f (patch) | |
tree | 9f63459624fa04bb83d49e9035c6195c0bfc6e49 | |
parent | d2ea8f80d195bd9550561ded0b6d3022052d9989 (diff) |
Disassemble remainder of bank $70.
-rw-r--r-- | engine/events/catch_tutorial_input.asm | 43 | ||||
-rw-r--r-- | engine/pokedex/pokedex_3.asm | 165 | ||||
-rw-r--r-- | engine/pokegear/townmap_convertlinebreakcharacters.asm | 21 | ||||
-rw-r--r-- | engine/printer/print_party.asm | 360 | ||||
-rw-r--r-- | engine/rtc/print_hours_mins.asm | 76 | ||||
-rw-r--r-- | gfx/pokedex/pokedex_sgb.2bpp.lz | bin | 0 -> 420 bytes | |||
-rw-r--r-- | gfx/pokedex/question_mark.2bpp.lz | bin | 0 -> 144 bytes | |||
-rw-r--r-- | gfx/pokegear/pokegear.2bpp.lz | bin | 0 -> 740 bytes | |||
-rw-r--r-- | gfx/printer/hp.1bpp | bin | 0 -> 8 bytes | |||
-rw-r--r-- | gfx/printer/lv.1bpp | bin | 0 -> 8 bytes | |||
-rw-r--r-- | main.asm | 45 | ||||
-rw-r--r-- | wram.asm | 11 |
12 files changed, 684 insertions, 37 deletions
diff --git a/engine/events/catch_tutorial_input.asm b/engine/events/catch_tutorial_input.asm new file mode 100644 index 00000000..cca2db2d --- /dev/null +++ b/engine/events/catch_tutorial_input.asm @@ -0,0 +1,43 @@ +_DudeAutoInput_A:: + ld hl, DudeAutoInput_A + jr _DudeAutoInput + +_DudeAutoInput_RightA: + ld hl, DudeAutoInput_RightA + jr _DudeAutoInput + +_DudeAutoInput_DownA: + ld hl, DudeAutoInput_DownA + jr _DudeAutoInput + +_DudeAutoInput: + ld a, BANK(DudeAutoInputs) + call StartAutoInput + ret + +DudeAutoInputs: ; used only for BANK(DudeAutoInputs) + +DudeAutoInput_A: + db NO_INPUT, $50 + db A_BUTTON, $00 + db NO_INPUT, $ff ; end + +DudeAutoInput_RightA: + db NO_INPUT, $08 + db D_RIGHT, $00 + db NO_INPUT, $08 + db A_BUTTON, $00 + db NO_INPUT, $ff ; end + +DudeAutoInput_DownA: + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db D_DOWN, $00 + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db NO_INPUT, $fe + db A_BUTTON, $00 + db NO_INPUT, $ff ; end diff --git a/engine/pokedex/pokedex_3.asm b/engine/pokedex/pokedex_3.asm new file mode 100644 index 00000000..7cde4dc4 --- /dev/null +++ b/engine/pokedex/pokedex_3.asm @@ -0,0 +1,165 @@ +StubbedGetFrontpic:: + ret + +LoadSGBPokedexGFX: + ld hl, SGBPokedexGFX_LZ + ld de, vTiles2 tile $31 + call Decompress + ret + +LoadSGBPokedexGFX2: + ld hl, SGBPokedexGFX_LZ + ld de, vTiles2 tile $31 + lb bc, BANK(SGBPokedexGFX_LZ), 58 + call DecompressRequest2bpp + ret + +SGBPokedexGFX_LZ: +INCBIN "gfx/pokedex/pokedex_sgb.2bpp.lz" + +LoadQuestionMarkPic: + ld hl, .QuestionMarkLZ + ld de, sScratch + call Decompress + ret + +.QuestionMarkLZ: +INCBIN "gfx/pokedex/question_mark.2bpp.lz" + +DrawPokedexListWindow: + ld a, $32 + hlcoord 0, 17 + ld bc, 12 + call ByteFill + hlcoord 0, 1 + lb bc, 15, 11 + call ClearBox + ld a, $34 + hlcoord 0, 0 + ld bc, 11 + call ByteFill + ld a, $39 + hlcoord 0, 16 + ld bc, 11 + call ByteFill + hlcoord 5, 0 + ld [hl], $3f + hlcoord 5, 16 + ld [hl], $40 + ld a, [wCurDexMode] + cp DEXMODE_OLD + jr z, .OldMode +; scroll bar + hlcoord 11, 0 + ld [hl], $50 + ld a, $51 + hlcoord 11, 1 + ld b, SCREEN_HEIGHT - 3 + call Bank70_FillColumn + ld [hl], $52 + jr .Done + +.OldMode: +; no scroll bar + hlcoord 11, 0 + ld [hl], $66 + ld a, $67 + hlcoord 11, 1 + ld b, SCREEN_HEIGHT - 3 + call Bank70_FillColumn + ld [hl], $68 +.Done: + ret + +DrawPokedexSearchResultsWindow: + ld a, $34 + hlcoord 0, 0 + ld bc, 11 + call ByteFill + ld a, $39 + hlcoord 0, 10 + ld bc, 11 + call ByteFill + hlcoord 5, 0 + ld [hl], $3f + hlcoord 5, 10 + ld [hl], $40 + hlcoord 11, 0 + ld [hl], $66 + ld a, $67 + hlcoord 11, 1 + ld b, SCREEN_HEIGHT / 2 + call Bank70_FillColumn + ld [hl], $68 + ld a, $34 + hlcoord 0, 11 + ld bc, 11 + call ByteFill + ld a, $39 + hlcoord 0, 17 + ld bc, 11 + call ByteFill + hlcoord 11, 11 + ld [hl], $66 + ld a, $67 + hlcoord 11, 12 + ld b, 5 + call Bank70_FillColumn + ld [hl], $68 + hlcoord 0, 12 + lb bc, 5, 11 + call ClearBox + ld de, .esults_D + hlcoord 0, 12 + call PlaceString + ret + +.esults_D +; (SEARCH R) + db "ESULTS" + next "" +; (### FOUN) + next "D!@" + +DrawDexEntryScreenRightEdge: + ldh a, [hBGMapAddress] + ld l, a + ldh a, [hBGMapAddress + 1] + ld h, a + push hl + inc hl + ld a, l + ldh [hBGMapAddress], a + ld a, h + ldh [hBGMapAddress + 1], a + hlcoord 19, 0 + ld [hl], $66 + hlcoord 19, 1 + ld a, $67 + ld b, 15 + call Bank70_FillColumn + ld [hl], $68 + hlcoord 19, 17 + ld [hl], $3c + xor a + ld b, SCREEN_HEIGHT + hlcoord 19, 0, wAttrmap + call Bank70_FillColumn + call WaitBGMap2 + pop hl + ld a, l + ldh [hBGMapAddress], a + ld a, h + ldh [hBGMapAddress + 1], a + ret + +Bank70_FillColumn: + push de + ld de, SCREEN_WIDTH +.loop + ld [hl], a + add hl, de + dec b + jr nz, .loop + pop de + ret diff --git a/engine/pokegear/townmap_convertlinebreakcharacters.asm b/engine/pokegear/townmap_convertlinebreakcharacters.asm new file mode 100644 index 00000000..a881b926 --- /dev/null +++ b/engine/pokegear/townmap_convertlinebreakcharacters.asm @@ -0,0 +1,21 @@ +TownMap_ConvertLineBreakCharacters: + ld hl, wStringBuffer1 +.loop + ld a, [hl] + cp "@" + jr z, .end + cp "%" + jr z, .line_feed + cp "¯" + jr z, .line_feed + inc hl + jr .loop + +.line_feed + ld [hl], "<LF>" + +.end + ld de, wStringBuffer1 + hlcoord 9, 0 + call PlaceString + ret diff --git a/engine/printer/print_party.asm b/engine/printer/print_party.asm new file mode 100644 index 00000000..7b98a337 --- /dev/null +++ b/engine/printer/print_party.asm @@ -0,0 +1,360 @@ +PRINTPARTY_HP EQU "◀" ; $71 + +PrintPage1: + hlcoord 0, 0 + decoord 0, 0, wPrinterTilemapBuffer + ld bc, 17 * SCREEN_WIDTH + call CopyBytes + hlcoord 17, 1, wPrinterTilemapBuffer + ld a, $62 + ld [hli], a + inc a + ld [hl], a + hlcoord 17, 2, wPrinterTilemapBuffer + ld a, $64 + ld [hli], a + inc a + ld [hl], a + hlcoord 1, 9, wPrinterTilemapBuffer + ld a, " " + ld [hli], a + ld [hl], a + hlcoord 1, 10, wPrinterTilemapBuffer + ld a, $61 + ld [hli], a + ld [hl], a + hlcoord 2, 11, wPrinterTilemapBuffer + lb bc, 5, 18 + call ClearBox + ld a, [wTempSpecies] + dec a + call CheckCaughtMon + push af + ld a, [wTempSpecies] + ld b, a + ld c, 1 ; get page 1 + farcall GetDexEntryPagePointer + pop af + ld a, b + hlcoord 1, 11, wPrinterTilemapBuffer + call nz, FarString + hlcoord 19, 0, wPrinterTilemapBuffer + ld [hl], $35 + ld de, SCREEN_WIDTH + add hl, de + ld b, $f +.column_loop + ld [hl], $37 + add hl, de + dec b + jr nz, .column_loop + ld [hl], $3a + ret + +PrintPage2: + hlcoord 0, 0, wPrinterTilemapBuffer + ld bc, 8 * SCREEN_WIDTH + ld a, " " + call ByteFill + hlcoord 0, 0, wPrinterTilemapBuffer + ld a, $36 + ld b, 6 + call .FillColumn + hlcoord 19, 0, wPrinterTilemapBuffer + ld a, $37 + ld b, 6 + call .FillColumn + hlcoord 0, 6, wPrinterTilemapBuffer + ld [hl], $38 + inc hl + ld a, $39 + ld bc, SCREEN_HEIGHT + call ByteFill + ld [hl], $3a + hlcoord 0, 7, wPrinterTilemapBuffer + ld bc, SCREEN_WIDTH + ld a, $32 + call ByteFill + ld a, [wTempSpecies] + dec a + call CheckCaughtMon + push af + ld a, [wTempSpecies] + ld b, a + ld c, 2 ; get page 2 + farcall GetDexEntryPagePointer + pop af + hlcoord 1, 1, wPrinterTilemapBuffer + ld a, b + call nz, FarString + ret + +.FillColumn: + push de + ld de, SCREEN_WIDTH +.column_loop + ld [hl], a + add hl, de + dec b + jr nz, .column_loop + pop de + ret + +GBPrinterStrings: ; used only for BANK(GBPrinterStrings) +GBPrinterString_Null: db "@" +GBPrinterString_CheckingLink: next " CHECKING LINK...@" +GBPrinterString_Transmitting: next " TRANSMITTING...@" +GBPrinterString_Printing: next " PRINTING...@" +GBPrinterString_PrinterError1: + db " Printer Error 1" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +GBPrinterString_PrinterError2: + db " Printer Error 2" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +GBPrinterString_PrinterError3: + db " Printer Error 3" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +GBPrinterString_PrinterError4: + db " Printer Error 4" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" + +PrintPartyMonPage1: + call ClearBGPalettes + call ClearTilemap + call ClearSprites + xor a + ldh [hBGMapMode], a + call LoadFontsBattleExtra + + ld de, GBPrinterHPIcon + ld hl, vTiles2 tile PRINTPARTY_HP + lb bc, BANK(GBPrinterHPIcon), 1 + call Request1bpp + + ld de, GBPrinterLvIcon + ld hl, vTiles2 tile "<LV>" + lb bc, BANK(GBPrinterLvIcon), 1 + call Request1bpp + + ld de, StatsScreenPageTilesGFX + 14 tiles ; shiny icon + ld hl, vTiles2 tile "⁂" + lb bc, BANK(StatsScreenPageTilesGFX), 1 + call Get2bpp + + xor a + ld [wMonType], a + farcall CopyMonToTempMon + hlcoord 0, 7 + ld b, 9 + ld c, 18 + call Textbox + hlcoord 8, 2 + ld a, [wTempMonLevel] + call PrintLevel_Force3Digits + hlcoord 12, 2 + ld [hl], PRINTPARTY_HP + inc hl + ld de, wTempMonMaxHP + lb bc, 2, 3 + call PrintNum + ld a, [wCurPartySpecies] + ld [wNamedObjectIndexBuffer], a + ld [wCurSpecies], a + ld hl, wPartyMonNicknames + call Function1c0375 + hlcoord 8, 4 + call PlaceString + hlcoord 9, 6 + ld [hl], "/" + call GetPokemonName + hlcoord 10, 6 + call PlaceString + hlcoord 8, 0 + ld [hl], "№" + inc hl + ld [hl], "." + inc hl + ld de, wNamedObjectIndexBuffer + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + hlcoord 1, 9 + ld de, String1c03b7 + call PlaceString + ld hl, wPartyMonOT + call Function1c0375 + hlcoord 4, 9 + call PlaceString + hlcoord 1, 11 + ld de, String1c03c0 + call PlaceString + hlcoord 4, 11 + ld de, wTempMonID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + hlcoord 1, 14 + ld de, String1c03bb + call PlaceString + hlcoord 7, 14 + ld a, [wTempMonMoves + 0] + call Function1c0381 + call Function1c0393 + ld hl, wTempMonDVs + predef GetUnownLetter + hlcoord 0, 0 + call PrepMonFrontpic + call WaitBGMap + ld b, SCGB_STATS_SCREEN_HP_PALS + call GetSGBLayout + call SetPalettes + ret + +PrintPartyMonPage2: + call ClearBGPalettes + call ClearTilemap + call ClearSprites + xor a + ldh [hBGMapMode], a + call LoadFontsBattleExtra + + ld de, GBPrinterHPIcon + ld hl, vTiles2 tile PRINTPARTY_HP + lb bc, BANK(GBPrinterHPIcon), 1 + call Request1bpp + + ld de, GBPrinterLvIcon + ld hl, vTiles2 tile "<LV>" + lb bc, BANK(GBPrinterLvIcon), 1 + call Request1bpp + + ld de, StatsScreenPageTilesGFX + 14 tiles ; shiny icon + ld hl, vTiles2 tile "⁂" + lb bc, BANK(StatsScreenPageTilesGFX), 1 + call Get2bpp + + xor a + ld [wMonType], a + farcall CopyMonToTempMon + hlcoord 0, 0 + ld b, 15 + ld c, 18 + call Textbox + ld bc, SCREEN_WIDTH + decoord 0, 0 + hlcoord 0, 1 + call CopyBytes + hlcoord 7, 0 + ld a, [wTempMonMoves + 1] + call Function1c0381 + hlcoord 7, 2 + ld a, [wTempMonMoves + 2] + call Function1c0381 + hlcoord 7, 4 + ld a, [wTempMonMoves + 3] + call Function1c0381 + hlcoord 7, 7 + ld de, String1c03c3 + call PlaceString + hlcoord 16, 7 + ld de, wTempMonAttack + call .PrintTempMonStats + hlcoord 16, 9 + ld de, wTempMonDefense + call .PrintTempMonStats + hlcoord 16, 11 + ld de, wTempMonSpclAtk + call .PrintTempMonStats + hlcoord 16, 13 + ld de, wTempMonSpclDef + call .PrintTempMonStats + hlcoord 16, 15 + ld de, wTempMonSpeed + call .PrintTempMonStats + call WaitBGMap + ld b, SCGB_STATS_SCREEN_HP_PALS + call GetSGBLayout + call SetPalettes + ret + +.PrintTempMonStats: + lb bc, 2, 3 + call PrintNum + ret + +Function1c0375: + ld bc, NAME_LENGTH + ld a, [wCurPartyMon] + call AddNTimes + ld e, l + ld d, h + ret + +Function1c0381: + and a + jr z, .no_move + + ld [wNamedObjectIndexBuffer], a + call GetMoveName + jr .got_string + +.no_move + ld de, String1c03ea + +.got_string + call PlaceString + ret + +Function1c0393: + farcall GetGender + ld a, " " + jr c, .got_gender + ld a, "♂" + jr nz, .got_gender + ld a, "♀" + +.got_gender + hlcoord 17, 2 + ld [hl], a + ld bc, wTempMonDVs + farcall CheckShininess + ret nc + hlcoord 18, 2 + ld [hl], "⁂" + ret + +String1c03b7: + db "OT/@" + +String1c03bb: + db "MOVE@" + +String1c03c0: + db "<ID>№@" + +String1c03c3: + db "ATTACK" + next "DEFENSE" + next "SPCL.ATK" + next "SPCL.DEF" + next "SPEED" + db "@" + +String1c03ea: + db "------------@" + +GBPrinterHPIcon: +INCBIN "gfx/printer/hp.1bpp" + +GBPrinterLvIcon: +INCBIN "gfx/printer/lv.1bpp" diff --git a/engine/rtc/print_hours_mins.asm b/engine/rtc/print_hours_mins.asm new file mode 100644 index 00000000..faa69756 --- /dev/null +++ b/engine/rtc/print_hours_mins.asm @@ -0,0 +1,76 @@ +Unreferenced_Function1c0a0d: + ld a, b + ld b, c + ld c, a + push bc + push de + ld hl, sp+$2 + ld d, h + ld e, l + pop hl + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + pop bc + ret + +PrintHoursMins: +; Hours in b, minutes in c + ld a, b + cp 12 + push af + jr c, .AM + jr z, .PM + sub 12 + jr .PM +.AM: + or a + jr nz, .PM + ld a, 12 +.PM: + ld b, a +; Crazy stuff happening with the stack + push bc + ld hl, sp+$1 + push de + push hl + pop de + pop hl + ld [hl], " " + lb bc, 1, 2 + call PrintNum + ld [hl], ":" + inc hl + ld d, h + ld e, l + ld hl, sp+$0 + push de + push hl + pop de + pop hl + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + pop bc + ld de, String_AM + pop af + jr c, .place_am_pm + ld de, String_PM +.place_am_pm + inc hl + call PlaceString + ret + +String_AM: db "AM@" +String_PM: db "PM@" + +UpdateTimePredef:: + call UpdateTime + ld hl, wDSTBackupDay + ld a, [wCurDay] + ld [hli], a ; wDSTBackupDay + ldh a, [hHours] + ld [hli], a ; wDSTBackupHours + ldh a, [hMinutes] + ld [hli], a ; wDSTBackupMinutes + ldh a, [hSeconds] + ld [hli], a ; wDSTBackupSeconds + ret diff --git a/gfx/pokedex/pokedex_sgb.2bpp.lz b/gfx/pokedex/pokedex_sgb.2bpp.lz Binary files differnew file mode 100644 index 00000000..6ec9c46b --- /dev/null +++ b/gfx/pokedex/pokedex_sgb.2bpp.lz diff --git a/gfx/pokedex/question_mark.2bpp.lz b/gfx/pokedex/question_mark.2bpp.lz Binary files differnew file mode 100644 index 00000000..cd2f7f22 --- /dev/null +++ b/gfx/pokedex/question_mark.2bpp.lz diff --git a/gfx/pokegear/pokegear.2bpp.lz b/gfx/pokegear/pokegear.2bpp.lz Binary files differnew file mode 100644 index 00000000..df312a51 --- /dev/null +++ b/gfx/pokegear/pokegear.2bpp.lz diff --git a/gfx/printer/hp.1bpp b/gfx/printer/hp.1bpp Binary files differnew file mode 100644 index 00000000..6fa64b65 --- /dev/null +++ b/gfx/printer/hp.1bpp diff --git a/gfx/printer/lv.1bpp b/gfx/printer/lv.1bpp Binary files differnew file mode 100644 index 00000000..d8dc7cb9 --- /dev/null +++ b/gfx/printer/lv.1bpp @@ -762,7 +762,9 @@ LoadBattleFontsHPBar:: LoadHPBar:: dr $f8081, $f80d9 LoadStatsScreenPageTilesGFX:: - dr $f80d9, $f8bb2 + dr $f80d9, $f8aa2 +StatsScreenPageTilesGFX:: + dr $f8aa2, $f8bb2 EnemyHPBarBorderGFX:: dr $f8bb2, $f8bd2 HPExpBarBorderGFX:: @@ -1040,40 +1042,19 @@ INCLUDE "data/items/descriptions.asm" SECTION "bank70", ROMX -PrintPage1:: - dr $1c0000, $1c0407 +INCLUDE "engine/printer/print_party.asm" + TilesetKantoGFX:: INCBIN "gfx/tilesets/kanto.2bpp.lz" -Unreferenced_Function1c0a0d: - dr $1c0a0d, $1c0a1f -PrintHoursMins:: - dr $1c0a1f, $1c0a66 -UpdateTimePredef:: - dr $1c0a66, $1c0a7a -StubbedGetFrontpic:: - ret -LoadSGBPokedexGFX:: - dr $1c0a7b, $1c0a85 -LoadSGBPokedexGFX2:: - dr $1c0a85, $1c0c36 -LoadQuestionMarkPic:: - dr $1c0c36, $1c0cd0 -DrawPokedexListWindow:: - dr $1c0cd0, $1c0d30 -DrawPokedexSearchResultsWindow:: - dr $1c0d30, $1c0da6 -DrawDexEntryScreenRightEdge:: - dr $1c0da6, $1c0de9 -_DudeAutoInput_A:: - dr $1c0de9, $1c0dee -_DudeAutoInput_RightA:: - dr $1c0dee, $1c0df3 -_DudeAutoInput_DownA:: - dr $1c0df3, $1c0e24 -TownMap_ConvertLineBreakCharacters:: - dr $1c0e24, $1c0e43 + +INCLUDE "engine/rtc/print_hours_mins.asm" +INCLUDE "engine/pokedex/pokedex_3.asm" +INCLUDE "engine/events/catch_tutorial_input.asm" +INCLUDE "engine/pokegear/townmap_convertlinebreakcharacters.asm" + PokegearGFX:: - dr $1c0e43, $1c1127 +INCBIN "gfx/pokegear/pokegear.2bpp.lz" + INCLUDE "data/credits_strings.asm" @@ -2009,15 +2009,16 @@ wStartMinute:: db ; d1de wStartSecond:: db ; d1df wRTC:: ds 4 ; d1e0 -wd1e4:: ds 1 ; d1e4 -wd1e5:: ds 1 ; d1e5 -wd1e6:: ds 1 ; d1e6 -wd1e7:: ds 1 ; d1e7 +wDSTBackupDay:: db ; d1e4 +wDSTBackupHours:: db ; d1e5 +wDSTBackupMinutes:: db ; d1e6 +wDSTBackupSeconds:: db ; d1e7 + wDST:: ; d1e8 ; bit 7: dst db -wd1e9:: ds 1 ; d1e9 + ds 1 wGameTimeCap:: db ; d1ea wGameTimeHours:: dw ; d1eb |