diff options
Diffstat (limited to 'misc')
-rwxr-xr-x | misc/gfx_41.asm | 602 | ||||
-rwxr-xr-x | misc/printer_77.asm | 356 |
2 files changed, 958 insertions, 0 deletions
diff --git a/misc/gfx_41.asm b/misc/gfx_41.asm new file mode 100755 index 000000000..bc49bca11 --- /dev/null +++ b/misc/gfx_41.asm @@ -0,0 +1,602 @@ +Function104000:: ; 104000 + ld hl, Function104006 + jp Function104177 +; 104006 + +Function104006: ; 104006 + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + decoord 0, 0 + ld hl, wBackupTilemap + call Function10425f + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function10419d + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function10419d + ret +; 10402d + +Function10402d:: ; 10402d + ld hl, Function104033 + jp Function104177 +; 104033 + +Function104033: ; 104033 + decoord 0, 0 + ld hl, wBackupTilemap + call Function10425f + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function10419d + ret +; 104047 + +Function104047: ; 104047 + ld hl, Function10404d + jp Function104177 +; 10404d + +Function10404d: ; 10404d + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function10419d + ret +; 104061 + +ReloadMapPart:: ; 104061 + ld hl, Function104067 + jp Function104177 +; 104067 + +Function104067: ; 104067 + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + decoord 0, 0 + ld hl, wBackupTilemap + call Function10425f + call DelayFrame + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function1041ad + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function1041ad + pop af + ld [rVBK], a + ei + ret + +Function104099: ; 104099 + ld hl, ReloadMapPart ; useless + ld hl, Function1040a2 + jp Function104177 +; 1040a2 + +Function1040a2: ; 1040a2 + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + decoord 0, 0 + ld hl, wBackupTilemap + call Function10425f + call DelayFrame + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function1041c1 + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function1041c1 + pop af + ld [rVBK], a + ei + ret +; 1040d4 + +Function1040d4: ; 1040d4 + ld hl, Function1040da + jp Function104177 +; 1040da + +Function1040da: ; 1040da + ld a, $1 + ld [rVBK], a + ld a, $3 + ld [rSVBK], a + ld de, w3_d800 + ld a, [hBGMapAddress + 1] + ld [rHDMA1], a + ld a, [hBGMapAddress] + ld [rHDMA2], a + ld a, d + ld [rHDMA3], a + ld a, e + ld [rHDMA4], a + ld a, $23 + ld [hDMATransfer], a + call Function1041a4 + ret +; 1040fb + +Function1040fb: ; 1040fb + ld hl, Function104101 + jp Function104177 +; 104101 + +Function104101: ; 104101 + ld a, $1 + ld [rVBK], a + ld a, $3 + ld [rSVBK], a + ld hl, w3_d800 + call Function10419d + ret +; 104110 + +Function104110:: ; 104110 + ld hl, Function104116 + jp Function104177 +; 104116 + +Function104116: ; 104116 + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + decoord 0, 0 + ld hl, wBackupTilemap + call Function10425f + call DelayFrame + di + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function1041b7 + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function1041b7 + pop af + ld [rVBK], a + ei + ret +; 104148 + +Function104148: ; 104148 (41:4148) + ld hl, Function10414e + jp Function104177 +; 10414e (41:414e) + +Function10414e: ; 10414e + decoord 0, 0, AttrMap + ld hl, wBackupAttrMap + call Function104263 + ld c, $ff + decoord 0, 0 + ld hl, wBackupTilemap + call Function104265 + ld a, $1 + ld [rVBK], a + ld hl, wBackupAttrMap + call Function1041ad + ld a, $0 + ld [rVBK], a + ld hl, wBackupTilemap + call Function1041ad + ret +; 104177 + +Function104177: ; 104177 + ld a, [hBGMapMode] + push af + ld a, [hMapAnims] + push af + xor a + ld [hBGMapMode], a + ld [hMapAnims], a + ld a, [rSVBK] + push af + ld a, 6 + ld [rSVBK], a + ld a, [rVBK] + push af + call ._hl_ + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret +; 10419c + +._hl_: ; 10419c + jp [hl] +; 10419d + + +Function10419d: ; 10419d (41:419d) + call Function10424e + ld a, $23 + ld [hDMATransfer], a + +Function1041a4: ; 104a14 +.asm_1041a4 + call DelayFrame + ld a, [hDMATransfer] + and a + jr nz, .asm_1041a4 + ret + +Function1041ad: ; 1041ad (41:41ad) + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, $24 + jr Function104209 + +Function1041b7: ; 1041b7 (41:41b7) + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, $24 + jr asm_104205 +; 1041c1 (41:41c1) + +Function1041c1: ; 1041c1 + ld a, [hBGMapAddress + 1] + ld d, a + ld a, [hBGMapAddress] + ld e, a + ld c, $24 + ld a, h + ld [rHDMA1], a + ld a, l + and $f0 + ld [rHDMA2], a + ld a, d + and $1f + ld [rHDMA3], a + ld a, e + and $f0 + ld [rHDMA4], a + ld a, c + dec c + or $80 + ld b, a + ld a, $7f + sub c + ld d, a +.loop1 + ld a, [rLY] + cp d + jr nc, .loop1 +.loop2 + ld a, [rSTAT] + and $3 + jr z, .loop2 + ld a, b + ld [rHDMA5], a + ld a, [rLY] + inc c + ld hl, rLY +.loop3 + cp [hl] + jr z, .loop3 + ld a, [hl] + dec c + jr nz, .loop3 + ld hl, rHDMA5 + res 7, [hl] + ret +; 104205 + +asm_104205: + ld b, $7b + jr asm_10420b + + +Function104209: +; LY magic + ld b, $7f +asm_10420b: + ld a, h + ld [rHDMA1], a + ld a, l + and $f0 ; high nybble + ld [rHDMA2], a + ld a, d + and $1f ; lower 5 bits + ld [rHDMA3], a + ld a, e + and $f0 ; high nybble + ld [rHDMA4], a + ld a, c + dec c + or $80 ; set 7, a + ld e, a + ld a, b + sub c + ld d, a +.ly_loop + ld a, [rLY] + cp d + jr nc, .ly_loop + + di +.rstat_loop_1 + ld a, [rSTAT] + and $3 + jr nz, .rstat_loop_1 +.rstat_loop_2 + ld a, [rSTAT] + and $3 + jr z, .rstat_loop_2 + ld a, e + ld [rHDMA5], a + ld a, [rLY] + inc c + ld hl, rLY +.final_ly_loop + cp [hl] + jr z, .final_ly_loop + ld a, [hl] + dec c + jr nz, .final_ly_loop + ld hl, rHDMA5 + res 7, [hl] + ei + + ret +; 10424e + + +Function10424e: ; 10424e (41:424e) + ld a, h + ld [rHDMA1], a + ld a, l + ld [rHDMA2], a + ld a, [hBGMapAddress + 1] + and $1f + ld [rHDMA3], a + ld a, [hBGMapAddress] + ld [rHDMA4], a + ret + +Function10425f: ; 10425f (41:425f) + ld c, " " + jr Function104265 + +Function104263: ; 104263 (41:4263) + ld c, $0 + +Function104265: ; 104265 (41:4265) +; back up the value of c to hMapObjectIndexBuffer + ld a, [hMapObjectIndexBuffer] + push af + ld a, c + ld [hMapObjectIndexBuffer], a + +; for each row on the screen + ld c, SCREEN_HEIGHT +.loop1 +; for each tile in the row + ld b, SCREEN_WIDTH +.loop2 +; copy from de to hl + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .loop2 + +; load the original value of c into hl 12 times + ld a, [hMapObjectIndexBuffer] + ld b, 12 +.loop3 + ld [hli], a + dec b + jr nz, .loop3 + + dec c + jr nz, .loop1 + +; restore the original value of hMapObjectIndexBuffer + pop af + ld [hMapObjectIndexBuffer], a + ret + + +_Get2bpp:: ; 104284 + ; 2bpp when [rLCDC] & $80 + ; switch to WRAM bank 6 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + + push bc + push hl + + ; Copy c tiles of the 2bpp from b:de to wBackupTilemap + ld a, b ; bank + ld l, c ; number of tiles + ld h, $0 +rept 4 + add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile) +endr + ld b, h + ld c, l + ld h, d ; address + ld l, e + ld de, wBackupTilemap + call FarCopyBytes + + pop hl + pop bc + + push bc + call DelayFrame + pop bc + + ld d, h + ld e, l + ld hl, wBackupTilemap + call Function104209 + + ; restore the previous bank + pop af + ld [rSVBK], a + ret +; 1042b2 + +_Get1bpp:: ; 1042b2 + ; 1bpp when [rLCDC] & $80 +.loop + ld a, c + cp $10 + jp c, .bankswitch + jp z, .bankswitch + push bc + push hl + push de + ld c, $10 + call .bankswitch + pop de + ld hl, $80 + add hl, de + ld d, h + ld e, l + pop hl + lb bc, 1, 0 + add hl, bc + pop bc + ld a, c + sub $10 + ld c, a + jr .loop +; 1042d6 + +.bankswitch: ; 1042d6 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + + push bc + push hl + + ld a, b + ld l, c + ld h, $0 +rept 3 + add hl, hl ; multiply by 8 +endr + ld c, l + ld b, h + ld h, d + ld l, e + ld de, wBackupTilemap + call FarCopyBytesDouble_DoubleBankSwitch + + pop hl + pop bc + + push bc + call DelayFrame + pop bc + + ld d, h + ld e, l + ld hl, wBackupTilemap + call Function104209 + + pop af + ld [rSVBK], a + ret +; 104303 + +Function104303: ; 104303 + ld hl, Function104309 + jp Function104177 +; 104309 + +Function104309: + ld hl, wBackupTilemap + decoord 0, 0 + call Function10433a + ld hl, wBackupTilemap + $80 + decoord 0, 0, AttrMap + call Function10433a + ld a, $1 + ld [rVBK], a + ld c, $8 + ld hl, wBackupTilemap + $80 + debgcoord 0, 0, VBGMap1 + call Function104209 + ld a, $0 + ld [rVBK], a + ld c, $8 + ld hl, wBackupTilemap + debgcoord 0, 0, VBGMap1 + call Function104209 + ret + +Function10433a: ; 10433a (41:433a) + ld b, 4 +.outer_loop + ld c, SCREEN_WIDTH +.inner_loop + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .inner_loop + ld a, l + add $20 - SCREEN_WIDTH + ld l, a + ld a, h + adc $0 + ld h, a + dec b + jr nz, .outer_loop + ret +; 104350 + +ShockEmote: INCBIN "gfx/emotes/shock.2bpp" +QuestionEmote: INCBIN "gfx/emotes/question.2bpp" +HappyEmote: INCBIN "gfx/emotes/happy.2bpp" +SadEmote: INCBIN "gfx/emotes/sad.2bpp" +HeartEmote: INCBIN "gfx/emotes/heart.2bpp" +BoltEmote: INCBIN "gfx/emotes/bolt.2bpp" +SleepEmote: INCBIN "gfx/emotes/sleep.2bpp" +FishEmote: INCBIN "gfx/emotes/fish.2bpp" +JumpShadowGFX: INCBIN "gfx/misc/shadow.2bpp" +FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp" +BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp" +FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp" diff --git a/misc/printer_77.asm b/misc/printer_77.asm new file mode 100755 index 000000000..72a7ec645 --- /dev/null +++ b/misc/printer_77.asm @@ -0,0 +1,356 @@ +PrintPage1: ; 1dc1b0 + hlcoord 0, 0 + ld de, wca90 + ld bc, 17 * SCREEN_WIDTH + call CopyBytes + ld hl, wcab5 + ld a, $62 + ld [hli], a + inc a + ld [hl], a + ld hl, wcac9 + ld a, $64 + ld [hli], a + inc a + ld [hl], a + ld hl, wcb45 + ld a, " " + ld [hli], a + ld [hl], a + ld hl, wcb59 + ld a, $61 + ld [hli], a + ld [hl], a + ld hl, wcb6e + lb bc, 5, 18 + call ClearBox + ld a, [wd265] + dec a + call CheckCaughtMon + push af + ld a, [wd265] + ld b, a + ld c, 1 ; get page 1 + callba GetDexEntryPagePointer + pop af + ld a, b + ld hl, wcb6d + call nz, FarString + ld hl, wcaa3 + 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 +; 1dc213 + +PrintPage2: ; 1dc213 + ld hl, wca90 + ld bc, $a0 + ld a, " " + call ByteFill + ld hl, wca90 + ld a, $36 + ld b, $6 + call .FillColumn + ld hl, wcaa3 + ld a, $37 + ld b, $6 + call .FillColumn + ld hl, wcb08 + ld [hl], $38 + inc hl + ld a, $39 + ld bc, SCREEN_HEIGHT + call ByteFill + ld [hl], $3a + ld hl, wcb1c + ld bc, SCREEN_WIDTH + ld a, $32 + call ByteFill + ld a, [wd265] + dec a + call CheckCaughtMon + push af + ld a, [wd265] + ld b, a + ld c, 2 ; get page 2 + callba GetDexEntryPagePointer + pop af + ld hl, wcaa5 + ld a, b + call nz, FarString + ret +; 1dc26a + +.FillColumn: ; 1dc26a + push de + ld de, SCREEN_WIDTH +.column_loop + ld [hl], a + add hl, de + dec b + jr nz, .column_loop + pop de + ret +; 1dc275 + +GBPrinterStrings: +String_1dc275: db "@" +String_1dc276: next " CHECKING LINK...@" +String_1dc289: next " TRANSMITTING...@" +String_1dc29c: next " PRINTING...@" +String_1dc2ad: + db " Printer Error 1" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +String_1dc2e2: + db " Printer Error 2" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +String_1dc317: + db " Printer Error 3" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +String_1dc34c: + db " Printer Error 4" + next "" + next "Check the Game Boy" + next "Printer Manual." + db "@" +; 1dc381 + +Function1dc381: ; 1dc381 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + xor a + ld [hBGMapMode], a + call LoadFontsBattleExtra + + ld de, MobileHPIcon + ld hl, VTiles2 tile $71 + lb bc, BANK(MobileHPIcon), 1 + call Request1bpp + + ld de, MobileLvIcon + ld hl, VTiles2 tile $6e + lb bc, BANK(MobileLvIcon), 1 + call Request1bpp + + ld de, ShinyIcon + ld hl, VTiles2 tile $3f + lb bc, BANK(ShinyIcon), 1 + call Get2bpp + + xor a + ld [MonType], a + callba CopyPkmnToTempMon + hlcoord 0, 7 + ld b, 9 + ld c, 18 + call TextBox + hlcoord 8, 2 + ld a, [TempMonLevel] + call Function383d + hlcoord 12, 2 + ld [hl], "◀" ; Filled left triangle + inc hl + ld de, TempMonMaxHP + lb bc, 2, 3 + call PrintNum + ld a, [CurPartySpecies] + ld [wd265], a + ld [CurSpecies], a + ld hl, PartyMonNicknames + call Function1dc50e + 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, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + hlcoord 1, 9 + ld de, String1dc550 + call PlaceString + ld hl, PartyMonOT + call Function1dc50e + hlcoord 4, 9 + call PlaceString + hlcoord 1, 11 + ld de, String1dc559 + call PlaceString + hlcoord 4, 11 + ld de, TempMonID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + hlcoord 1, 14 + ld de, String1dc554 + call PlaceString + hlcoord 7, 14 + ld a, [TempMonMoves + 0] + call Function1dc51a + call Function1dc52c + ld hl, TempMonDVs + predef GetUnownLetter + ld hl, wc2c6 + xor a + ld [hl], a + ld a, [CurPartySpecies] + cp UNOWN + jr z, .asm_1dc469 + inc [hl] + +.asm_1dc469 + hlcoord 0, 0 + call _PrepMonFrontpic + call WaitBGMap + ld b, SCGB_03 + call GetSGBLayout + call SetPalettes + ret +; 1dc47b + +Function1dc47b: ; 1dc47b + call ClearBGPalettes + call ClearTileMap + call ClearSprites + xor a + ld [hBGMapMode], a + call LoadFontsBattleExtra + xor a + ld [MonType], a + callba CopyPkmnToTempMon + 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, [TempMonMoves + 1] + call Function1dc51a + hlcoord 7, 2 + ld a, [TempMonMoves + 2] + call Function1dc51a + hlcoord 7, 4 + ld a, [TempMonMoves + 3] + call Function1dc51a + hlcoord 7, 7 + ld de, String1dc55d + call PlaceString + hlcoord 16, 7 + ld de, TempMonAttack + call .PrintTempMonStats + hlcoord 16, 9 + ld de, TempMonDefense + call .PrintTempMonStats + hlcoord 16, 11 + ld de, TempMonSpclAtk + call .PrintTempMonStats + hlcoord 16, 13 + ld de, TempMonSpclDef + call .PrintTempMonStats + hlcoord 16, 15 + ld de, TempMonSpeed + call .PrintTempMonStats + call WaitBGMap + ld b, SCGB_03 + call GetSGBLayout + call SetPalettes + ret +; 1dc507 + +.PrintTempMonStats: ; 1dc507 + lb bc, 2, 3 + call PrintNum + ret +; 1dc50e + +Function1dc50e: ; 1dc50e + ld bc, NAME_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld e, l + ld d, h + ret +; 1dc51a + +Function1dc51a: ; 1dc51a + and a + jr z, .no_move + + ld [wd265], a + call GetMoveName + jr .got_string + +.no_move + ld de, String1dc584 + +.got_string + call PlaceString + ret +; 1dc52c + +Function1dc52c: ; 1dc52c + callba 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, TempMonDVs + callba CheckShininess + ret nc + hlcoord 18, 2 + ld [hl], "<SHINY>" + ret +; 1dc550 + +String1dc550: ; 1dc550 + db "OT/@" + +String1dc554: ; 1dc554 + db "MOVE@" + +String1dc559: ; 1dc559 + db "<ID>№.@" + +String1dc55d: ; 1dc55d + db "ATTACK" + next "DEFENSE" + next "SPCL.ATK" + next "SPCL.DEF" + next "SPEED" + db "@" + +String1dc584: ; 1dc584 + db "------------@" +; 1dc591 |