diff options
Diffstat (limited to 'engine/printer.asm')
-rw-r--r--[-rwxr-xr-x] | engine/printer.asm | 1360 |
1 files changed, 379 insertions, 981 deletions
diff --git a/engine/printer.asm b/engine/printer.asm index 08523bfd..d4cc8192 100755..100644 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -1,831 +1,232 @@ -Func_e8783: ; e8783 (3a:4783) - ld a, 9 -Func_e8785: - push af - ld hl, wOverworldMap - lb bc, 4, 13 - xor a - call Func_e8a2e - xor a - ld [rSB], a - ld [rSC], a - ld [wUnknownSerialFlag_d49b], a - ld hl, wUnknownSerialFlag_d49a - set 0, [hl] - ld a, [wd498] - ld [$cae3], a - pop af - ld [$caf4], a - ret - -; e87a8 -Func_e87a8: ; e87a8 (3a:47a8) - ld a, [wOverworldMap] - ld e, a - ld d, 0 - ld hl, Jumptable_e87b7 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Jumptable_e87b7: - dw Func_e87fd - dw Func_e88c9 - dw Func_e88a6 - dw Func_e881f - dw Func_e8906 - dw Func_e88b4 - dw Func_e884b - dw Func_e8906 - dw Func_e88a6 - dw Func_e8864 - dw Func_e8906 - dw Func_e88a6 - dw Func_e8927 - dw Func_e87e9 - dw Func_e87f3 - dw Func_e88a6 - dw Func_e8889 - dw Func_e87f7 - dw Func_e8936 - dw Func_e8939 - -Func_e87df: - ld hl, wOverworldMap - inc [hl] - ret - -Func_e87e4: - ld hl, wOverworldMap - dec [hl] - ret - -Func_e87e9: - xor a - ld [$c971], a - ld hl, wOverworldMap - set 7, [hl] - ret - -Func_e87f3: - call Func_e87df - ret - -Func_e87f7: - ld a, $01 - ld [wOverworldMap], a - ret - -Func_e87fd: - call Func_e8981 - ld hl, Data_e8a3a - call Func_e8968 - xor a - ld [$c976], a - ld [$c977], a - ld a, [$caf4] - ld [$c6e9], a - call Func_e87df - call Func_e8949 - ld a, $01 - ld [$cae0], a - ret - -Func_e881f: - call Func_e8981 - ld hl, $c6e9 - ld a, [hl] - and a - jr z, Func_e884b - ld hl, Data_e8a46 - call Func_e8968 - call Func_e89e6 - ld a, $80 - ld [$c976], a - ld a, $02 - ld [$c977], a - call Func_e899f - call Func_e87df - call Func_e8949 - ld a, $02 - ld [$cae0], a - ret - -Func_e884b: - ld a, $06 - ld [wOverworldMap], a - ld hl, Data_e8a4c - call Func_e8968 - xor a - ld [$c976], a - ld [$c977], a - call Func_e87df - call Func_e8949 - ret - -Func_e8864: - call Func_e8981 - ld hl, Data_e8a40 - call Func_e8968 - call Func_e89cf - ld a, $04 - ld [$c976], a - ld a, $00 - ld [$c977], a - call Func_e899f - call Func_e87df - call Func_e8949 - ld a, $03 - ld [$cae0], a - ret - -Func_e8889: - call Func_e8981 - ld hl, Data_e8a3a - call Func_e8968 - xor a - ld [$c976], a - ld [$c977], a - ld a, [$caf4] - ld [$c6e9], a - call Func_e87df - call Func_e8949 - ret - -Func_e88a6: - ld hl, $c973 - inc [hl] - ld a, [hl] - cp a, $06 - ret c - xor a - ld [hl], a - call Func_e87df - ret - -Func_e88b4: - ld hl, $c973 - inc [hl] - ld a, [hl] - cp a, $06 - ret c - xor a - ld [hl], a - ld hl, $c6e9 - dec [hl] - call Func_e87e4 - call Func_e87e4 - ret - -Func_e88c9: - ld a, [wUnknownSerialFlag_d49b] - and a - ret nz - ld a, [$c970] - cp a, $ff - jr nz, .asm_e88dc - ld a, [$c971] - cp a, $ff - jr z, .asm_e88f8 -.asm_e88dc - ld a, [$c970] - cp a, $81 - jr nz, .asm_e88f8 - ld a, [$c971] - cp a, $00 - jr nz, .asm_e88f8 - ld hl, wUnknownSerialFlag_d49a - set 1, [hl] - ld a, $05 - ld [$c972], a - call Func_e87df - ret - -.asm_e88f8 - ld a, $ff - ld [$c970], a - ld [$c971], a - ld a, $0e - ld [wOverworldMap], a - ret - -Func_e8906: - ld a, [wUnknownSerialFlag_d49b] - and a - ret nz - ld a, [$c971] - and a, $f0 - jr nz, .asm_e8921 - ld a, [$c971] - and a, $01 - jr nz, .asm_e891d - call Func_e87df - ret - -.asm_e891d - call Func_e87e4 - ret - -.asm_e8921 - ld a, $12 - ld [wOverworldMap], a - ret - -Func_e8927: - ld a, [wUnknownSerialFlag_d49b] - and a - ret nz - ld a, [$c971] - and a, $f3 - ret nz - call Func_e87df - ret - -Func_e8936: - call Func_e87df -Func_e8939: - ld a, [wUnknownSerialFlag_d49b] - and a - ret nz - ld a, [$c971] - and a, $f0 - ret nz - xor a - ld [wOverworldMap], a - ret - -Func_e8949: -.asm_e8949 - ld a, [wUnknownSerialFlag_d49b] - and a - jr nz, .asm_e8949 - xor a - ld [$c974], a - ld [$c975], a - ld a, $01 - ld [wUnknownSerialFlag_d49b], a - ld a, $88 - ld [rSB], a - ld a, $01 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Func_e8968: - ld a, [hli] - ld [$c6ea], a - ld a, [hli] - ld [$c6eb], a - ld a, [hli] - ld [$c6ec], a - ld a, [hli] - ld [$c6ed], a - ld a, [hli] - ld [$c6ee], a - ld a, [hl] - ld [$c6ef], a - ret - -Func_e8981: - xor a - ld hl, $c6ea - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld hl, $c6ee - ld [hli], a - ld [hl], a - xor a - ld [$c976], a - ld [$c977], a - ld hl, $c6f0 - ld bc, $0280 - call Func_e8a2e - ret - -Func_e899f: - ld hl, $0000 - ld bc, $0004 - ld de, $c6ea - call Func_e89c2 - ld a, [$c976] - ld c, a - ld a, [$c977] - ld b, a - ld de, $c6f0 - call Func_e89c2 - ld a, l - ld [$c6ee], a - ld a, h - ld [$c6ef], a - ret - -Func_e89c2: -.asm_e89c2 - ld a, [de] - inc de - add l - jr nc, .asm_e89c8 - inc h -.asm_e89c8 - ld l, a - dec bc - ld a, c - or b - jr nz, .asm_e89c2 - ret - -Func_e89cf: - ld a, $01 - ld [$c6f0], a - ld a, [$cae2] - ld [$c6f1], a - ld a, $e4 - ld [$c6f2], a - ld a, [$cae3] - ld [$c6f3], a - ret - -Func_e89e6: - ld a, [$c6e9] - ld b, a - ld a, [$caf4] - sub b - ld hl, wPrinterTileBuffer - ld de, $0028 -.asm_e89f4 - and a - jr z, .asm_e89fb - add hl, de - dec a - jr .asm_e89f4 - -.asm_e89fb - ld e, l - ld d, h - ld hl, $c6f0 - ld c, $28 -.asm_e8a02 - ld a, [de] - inc de - push bc - push de - push hl - swap a - ld d, a - and a, $f0 - ld e, a - ld a, d - and a, $0f - ld d, a - and a, $08 - ld a, d - jr nz, .asm_e8a1a - or a, $90 - jr .asm_e8a1c - -.asm_e8a1a - or a, $80 -.asm_e8a1c - ld d, a - ld bc, $3a01 - call CopyVideoData - pop hl - ld de, $0010 - add hl, de - pop de - pop bc - dec c - jr nz, .asm_e8a02 - ret - -Func_e8a2e: ; e8a2e (3a:4a2e) - push de - ld e, a -.asm_e8a30 - ld [hl], e - inc hl - dec bc - ld a, c - or b - jr nz, .asm_e8a30 - ld a, e - pop de - ret - -Data_e8a3a: - db $01, $00, $00, $00, $01, $00 -Data_e8a40: - db $02, $00, $04, $00, $00, $00 -Data_e8a46: - db $04, $00, $80, $02, $00, $00 -Data_e8a4c: - db $04, $00, $00, $00, $04, $00 -Data_e8a52: - db $08, $00, $00, $00, $08, $00 -Data_e8a58: - db $0f, $00, $00, $00, $0f, $00 - -Func_e8a5e: ; e8a5e (3a:4a5e) - ld a, [wUnknownSerialFlag_d49b] - ld e, a - ld d, 0 - ld hl, Jumptable_e8a6d - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -Jumptable_e8a6d: - dw Func_e8ab2 - dw Func_e8ab3 - dw Func_e8abc - dw Func_e8ac6 - dw Func_e8ad0 - dw Func_e8ada - dw Func_e8ae4 - dw Func_e8b0f - dw Func_e8b19 - dw Func_e8b23 - dw Func_e8b2c - dw Func_e8b3a - dw Func_e8ab3 - dw Func_e8b44 - dw Func_e8b4d - dw Func_e8b4d - dw Func_e8b4d - dw Func_e8b44 - dw Func_e8b4d - dw Func_e8b23 - dw Func_e8b2c - dw Func_e8b6a - dw Func_e8ab3 - dw Func_e8b56 - dw Func_e8b4d - dw Func_e8b4d - dw Func_e8b4d - dw Func_e8b56 - dw Func_e8b4d - dw Func_e8b23 - dw Func_e8b2c - dw Func_e8b3a - -Func_e8aad: - ld hl, wUnknownSerialFlag_d49b - inc [hl] - ret - -Func_e8ab2: - ret - -Func_e8ab3: - ld a, $33 - call Func_e8b5f - call Func_e8aad - ret - -Func_e8abc: - ld a, [$c6ea] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8ac6: - ld a, [$c6eb] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8ad0: - ld a, [$c6ec] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8ada: - ld a, [$c6ed] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8ae4: - ld hl, $c976 - ld e, [hl] - inc hl - ld d, [hl] - ld a, e - or d - jr z, .asm_e8b0c - dec de - ld [hl], d - dec hl - ld [hl], e - ld a, [$c974] - ld e, a - ld a, [$c975] - ld d, a - ld hl, $c6f0 - add hl, de - inc de - ld a, e - ld [$c974], a - ld a, d - ld [$c975], a - ld a, [hl] - call Func_e8b5f - ret - -.asm_e8b0c - call Func_e8aad -Func_e8b0f: - ld a, [$c6ee] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b19: - ld a, [$c6ef] - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b23: - ld a, $00 - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b2c: - ld a, [rSB] - ld [$c970], a - ld a, $00 - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b3a: - ld a, [rSB] - ld [$c971], a - xor a - ld [wUnknownSerialFlag_d49b], a - ret - -Func_e8b44: - ld a, $0f - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b4d: - ld a, $00 - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b56: - ld a, $08 - call Func_e8b5f - call Func_e8aad - ret - -Func_e8b5f: - ld [rSB], a - ld a, $01 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Func_e8b6a: - ld a, [rSB] - ld [$c971], a - xor a - ld [wUnknownSerialFlag_d49b], a - ret - -Func_e8b74: ; e8b74 (3a:4b74) - ld a, [$cfca] + const_def + const PRINTER_STATUS_BLANK + const PRINTER_STATUS_CHECKING_LINK + const PRINTER_STATUS_TRANSMITTING + const PRINTER_STATUS_PRINTING + const PRINTER_ERROR_1 + const PRINTER_ERROR_2 + const PRINTER_ERROR_3 + const PRINTER_ERROR_4 + const PRINTER_ERROR_WRONG_DEVICE + +INCLUDE "engine/printer/serial.asm" + +PrintPokedexEntry: ; e8b74 (3a:4b74) + ld a, [wUpdateSpritesEnabled] push af xor a - ld [$cfca], a - ld [$ffdb], a - call Func_e8f24 + ld [wUpdateSpritesEnabled], a + ld [hCanceledPrinting], a + call Printer_PlayPrinterMusic ld a, [rIE] push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a xor a - ld [$ffba], a - call Func_e8c30 - call Func_e8785 - ld a, [$caf9] + ld [H_AUTOBGTRANSFERENABLED], a + call Printer_GetDexEntryRegisters + call Printer_StartTransmission + ld a, [wPrinterPokedexMonIsOwned] and a - jr z, .asm_e8b9e - ld a, $10 - jr .asm_e8ba0 - -.asm_e8b9e - ld a, $13 -.asm_e8ba0 - ld [$cae2], a - call Func_e8efc + jr z, .not_caught + ld a, 16 + jr .got_size + +.not_caught + ld a, 19 +.got_size + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call ClearScreen - callab Func_401c2 - callab Func_4027c - ld a, $01 - ld [$ffba], a - call Func_e8c0c - jr c, .asm_e8bf4 - ld a, [$caf9] + callab Pokedex_DrawInterface + callab Pokedex_PlacePokemonList + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a + call .TryPrintPage + jr c, .finish_printing + ld a, [wPrinterPokedexMonIsOwned] and a - jr z, .asm_e8bf4 + jr z, .finish_printing xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a - ld c, $0c + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + ld c, $c call DelayFrames call SaveScreenTilesToBuffer1 xor a - ld [$ffba], a - call Func_e8c50 - ld a, $07 - call Func_e8785 - ld a, $03 - ld [$cae2], a - call Func_e8efc + ld [H_AUTOBGTRANSFERENABLED], a + call Printer_PrepareDexEntryForPrinting + ld a, $7 + call Printer_StartTransmission + ld a, $3 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 - ld a, $01 - ld [$ffba], a - call Func_e8c0c -.asm_e8bf4 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a + call .TryPrintPage +.finish_printing xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a xor a ld [rIF], a pop af ld [rIE], a - call Func_0f3d - call Func_e8f3b + call ReloadMapAfterPrinter + call Printer_PlayMapMusic pop af - ld [$cfca], a + ld [wUpdateSpritesEnabled], a ret -Func_e8c0c: - call Func_e8f16 -.asm_e8c0f +.TryPrintPage: + call Printer_ResetJoypadHRAM +.print_loop call JoypadLowSensitivity - call Func_e8eca - jr c, .asm_e8c2e - ld a, [$c6e8] + call Printer_CheckPressingB + jr c, .pressed_b + ld a, [wPrinterSendState] bit 7, a - jr nz, .asm_e8c2c - call Func_e87a8 - call Func_e8f51 - call Func_e8f82 + jr nz, .completed + call PrinterTransmissionJumptable + call GBPrinter_CheckForErrors + call GBPrinter_UpdateStatusMessage call DelayFrame - jr .asm_e8c0f + jr .print_loop -.asm_e8c2c +.completed and a ret -.asm_e8c2e +.pressed_b scf ret -Func_e8c30: - callab Func_4039c +Printer_GetDexEntryRegisters: + callab DrawDexEntryOnScreen ld a, l - ld [$caf5], a + ld [wPrinterPokedexEntryTextPointer], a ld a, h - ld [$caf6], a - ld a, $00 - rla - ld [$caf9], a + ld [wPrinterPokedexEntryTextPointer + 1], a + ld a, $0 + rla ; copy carry flag state to bit 0 + ld [wPrinterPokedexMonIsOwned], a and a - jr z, .asm_e8c4d - ld a, $05 - jr .asm_e8c4f + jr z, .not_caught + ld a, $5 + jr .got_num_rows -.asm_e8c4d - ld a, $09 -.asm_e8c4f +.not_caught + ld a, $9 +.got_num_rows ret -Func_e8c50: +Printer_PrepareDexEntryForPrinting: call ClearScreen - callab Func_404bc + callab Pokedex_PrepareDexEntryForPrinting ret -Func_e8c5c: +PrintSurfingMinigameHighScore: xor a - ld [$ffdb], a - call Func_e8f24 - call Func_e910a + ld [hCanceledPrinting], a + call Printer_PlayPrinterMusic + call Printer_PrepareSurfingMinigameHighScoreTileMap ld a, [rIE] push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a - call Func_e8783 + call StartTransmission_Send9Rows ld a, $13 - ld [$cae2], a - call Func_e8efc - call Func_e8f16 -.asm_e8c7d + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer + call Printer_ResetJoypadHRAM +.loop call JoypadLowSensitivity - call Func_e8eca - jr c, .asm_e8c9a - ld a, [$c6e8] + call Printer_CheckPressingB + jr c, .quit + ld a, [wPrinterSendState] bit 7, a - jr nz, .asm_e8c9a - call Func_e87a8 - call Func_e8f51 - call Func_e8f82 + jr nz, .quit + call PrinterTransmissionJumptable + call GBPrinter_CheckForErrors + call GBPrinter_UpdateStatusMessage call DelayFrame - jr .asm_e8c7d + jr .loop -.asm_e8c9a +.quit xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a - call Func_e8f09 + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + call Printer_CopyTileMapFromPrinterTileBuffer xor a ld [rIF], a pop af ld [rIE], a - call Func_0f3d - call Func_e8f3b + call ReloadMapAfterPrinter + call Printer_PlayMapMusic ret -Func_e8cb1: +PrintDiploma: xor a - ld [$ffdb], a - call Func_e8f24 + ld [hCanceledPrinting], a + call Printer_PlayPrinterMusic call _DisplayDiploma ld a, [rIE] push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a - call Func_e8783 + call StartTransmission_Send9Rows ld a, $10 - ld [$cae2], a - call Func_e8efc + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call Func_e8d11 jr c, .asm_e8cfa xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a - ld c, $0c + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + ld c, $c call DelayFrames call SaveScreenTilesToBuffer1 xor a - ld [$ffba], a + ld [H_AUTOBGTRANSFERENABLED], a call Func_e9ad3 - call Func_e8783 - ld a, $03 - ld [$cae2], a - call Func_e8efc + call StartTransmission_Send9Rows + ld a, $3 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 call Func_e8d11 .asm_e8cfa xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a - call Func_e8f09 + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + call Printer_CopyTileMapFromPrinterTileBuffer xor a ld [rIF], a pop af ld [rIE], a - call Func_0f3d - call Func_e8f3b + call ReloadMapAfterPrinter + call Printer_PlayMapMusic ret Func_e8d11: - call Func_e8f16 + call Printer_ResetJoypadHRAM .asm_e8d14 call JoypadLowSensitivity - call Func_e8eca + call Printer_CheckPressingB jr c, .asm_e8d33 - ld a, [$c6e8] + ld a, [wPrinterSendState] bit 7, a jr nz, .asm_e8d31 - call Func_e87a8 - call Func_e8f51 - call Func_e8f82 + call PrinterTransmissionJumptable + call GBPrinter_CheckForErrors + call GBPrinter_UpdateStatusMessage call DelayFrame jr .asm_e8d14 @@ -837,9 +238,7 @@ Func_e8d11: scf ret - - -Func_e8d35:: ; e8d35 (3a:4e79) +PrintPCBox:: ; e8d35 (3a:4e79) ld a, [wBoxDataStart] and a jp z, Func_e8df4 @@ -847,79 +246,79 @@ Func_e8d35:: ; e8d35 (3a:4e79) push af xor a ld [wUpdateSpritesEnabled], a - ld [hItemCounter], a - call Func_e8f24 + ld [hCanceledPrinting], a + call Printer_PlayPrinterMusic ld a, [rIE] push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a call SaveScreenTilesToBuffer1 xor a ld [H_AUTOBGTRANSFERENABLED], a - call Func_e988a - call Func_e8783 + call PrintPCBox_DrawPage1 + call StartTransmission_Send9Rows ld a, $10 - ld [$cae2], a - call Func_e8efc + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 call Func_e8dfb jr c, .asm_e8ddc xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a ld c, 12 call DelayFrames xor a ld [H_AUTOBGTRANSFERENABLED], a - call Func_e98ec - call Func_e8783 - ld a, $00 - ld [$cae2], a - call Func_e8efc + call PrintPCBox_DrawPage2 + call StartTransmission_Send9Rows + ld a, $0 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 call Func_e8dfb jr c, .asm_e8ddc xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a ld c, 12 call DelayFrames xor a ld [H_AUTOBGTRANSFERENABLED], a - call Func_e9907 - call Func_e8783 - ld a, $00 - ld [$cae2], a - call Func_e8efc + call PrintPCBox_DrawPage3 + call StartTransmission_Send9Rows + ld a, $0 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 call Func_e8dfb jr c, .asm_e8ddc xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a ld c, 12 call DelayFrames xor a ld [H_AUTOBGTRANSFERENABLED], a - call Func_e9922 - call Func_e8783 - ld a, $03 - ld [$cae2], a - call Func_e8efc + call PrintPCBox_DrawPage4 + call StartTransmission_Send9Rows + ld a, $3 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer call LoadScreenTilesFromBuffer1 call Func_e8dfb .asm_e8ddc xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a xor a ld [rIF], a pop af ld [rIE], a - call Func_0f3d - call Func_e8f3b + call ReloadMapAfterPrinter + call Printer_PlayMapMusic pop af ld [wUpdateSpritesEnabled], a ret @@ -930,17 +329,17 @@ Func_e8df4: ; e8df4 ret Func_e8dfb: ; e8dfb - call Func_e8f16 + call Printer_ResetJoypadHRAM .asm_e8dfe call JoypadLowSensitivity - call Func_e8eca + call Printer_CheckPressingB jr c, .asm_e8e1d - ld a, [wOverworldMap] + ld a, [wPrinterSendState] bit 7, a jr nz, .asm_e8e1b - call Func_e87a8 - call Func_e8f51 - call Func_e8f82 + call PrinterTransmissionJumptable + call GBPrinter_CheckForErrors + call GBPrinter_UpdateStatusMessage call DelayFrame jr .asm_e8dfe @@ -956,46 +355,46 @@ String_e8e1f: ; e8e1f TX_FAR _NoPokemonText db "@" -Func_e8e24: ; e8e24 +PrintFanClubPortrait: ; e8e24 xor a - ld [hItemCounter], a - call Func_e8f24 + ld [hCanceledPrinting], a + call Printer_PlayPrinterMusic call Func_ea3ea ld a, [rIE] push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a - call Func_e8783 + call StartTransmission_Send9Rows ld a, $13 - ld [$cae2], a - call Func_e8efc - call Func_e8f16 + ld [wcae2], a + call Printer_CopyTileMapToPrinterTileBuffer + call Printer_ResetJoypadHRAM .asm_e8e45 call JoypadLowSensitivity - call Func_e8eca + call Printer_CheckPressingB jr c, .asm_e8e62 - ld a, [wOverworldMap] + ld a, [wPrinterSendState] bit 7, a jr nz, .asm_e8e62 - call Func_e87a8 - call Func_e8f51 - call Func_e8f82 + call PrinterTransmissionJumptable + call GBPrinter_CheckForErrors + call GBPrinter_UpdateStatusMessage call DelayFrame jr .asm_e8e45 .asm_e8e62 xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a - call Func_e8f09 + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a + call Printer_CopyTileMapFromPrinterTileBuffer xor a ld [rIF], a pop af ld [rIE], a - call Func_0f3d - call Func_e8f3b + call ReloadMapAfterPrinter + call Printer_PlayMapMusic ret Func_e8e79: ; e8e79 (3a:4e79) @@ -1008,30 +407,30 @@ Func_e8e79: ; e8e79 (3a:4e79) push af xor a ld [rIF], a - ld a, $09 + ld a, $9 ld [rIE], a - call Func_e8783 + call StartTransmission_Send9Rows ld a, $13 - ld [$cae2], a + ld [wcae2], a ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a - call Func_e8efc + call Printer_CopyTileMapToPrinterTileBuffer call Func_ea573 -.asm_e8e9c - ld a, [wOverworldMap] +.loop + ld a, [wPrinterSendState] bit 7, a - jr nz, .asm_e8eae + jr nz, .quit call Func_ea5d1 call Func_ea5b7 call DelayFrame - jr .asm_e8e9c + jr .loop -.asm_e8eae +.quit xor a - ld [wUnknownSerialFlag_d49a], a - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a ld hl, wOAMBuffer + 32 * 4 - ld bc, $0020 + ld bc, 8 * 4 xor a call FillMemory xor a @@ -1044,54 +443,54 @@ Func_e8e79: ; e8e79 (3a:4e79) pop af ret -Func_e8eca: ; e8eca (3a:4eca) +Printer_CheckPressingB: ; e8eca (3a:4eca) ld a, [hJoyHeld] and B_BUTTON - jr nz, .asm_e8ed2 + jr nz, .quit and a ret -.asm_e8ed2 - ld a, [wOverworldMap] - cp $0c - jr nz, .asm_e8ef6 -.asm_e8ed9 - ld a, [wUnknownSerialFlag_d49b] +.quit + ld a, [wPrinterSendState] + cp $c + jr nz, .already_done +.wait_current_task + ld a, [wPrinterOpcode] and a - jr nz, .asm_e8ed9 + jr nz, .wait_current_task ld a, $16 - ld [wUnknownSerialFlag_d49b], a + ld [wPrinterOpcode], a ld a, $88 ld [rSB], a - ld a, $01 + ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a -.asm_e8ef0 - ld a, [wUnknownSerialFlag_d49b] +.wait_send_cancel + ld a, [wPrinterOpcode] and a - jr nz, .asm_e8ef0 -.asm_e8ef6 - ld a, $01 - ld [hItemCounter], a + jr nz, .wait_send_cancel +.already_done + ld a, $1 + ld [hCanceledPrinting], a scf ret -Func_e8efc: ; e8efc (3a:4efc) +Printer_CopyTileMapToPrinterTileBuffer: ; e8efc (3a:4efc) coord hl, 0, 0 coord de, 0, 0, wPrinterTileBuffer ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call CopyData ret -Func_e8f09: ; e8f09 (3a:4f09) +Printer_CopyTileMapFromPrinterTileBuffer: ; e8f09 (3a:4f09) coord hl, 0, 0, wPrinterTileBuffer coord de, 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call CopyData ret -Func_e8f16: ; e8f16 (3a:4f16) +Printer_ResetJoypadHRAM: ; e8f16 (3a:4f16) xor a ld [hJoyLast], a ld [hJoyReleased], a @@ -1101,8 +500,8 @@ Func_e8f16: ; e8f16 (3a:4f16) ld [hJoy6], a ret -Func_e8f24: ; e8f24 (3a:4f24) - call Func_e8f42 +Printer_PlayPrinterMusic: ; e8f24 (3a:4f24) + call Printer_FadeOutMusicAndWait ld a, [wAudioROMBank] ld [wAudioSavedROMBank], a ld a, BANK(Music_GBPrinter) @@ -1112,58 +511,59 @@ Func_e8f24: ; e8f24 (3a:4f24) call PlaySound ret -Func_e8f3b: ; e8f3b (3a:4f3b) - call Func_e8f42 +Printer_PlayMapMusic: ; e8f3b (3a:4f3b) + call Printer_FadeOutMusicAndWait call PlayDefaultMusic ret -Func_e8f42: ; e8f42 (3a:4f42) +Printer_FadeOutMusicAndWait: ; e8f42 (3a:4f42) ld a, $4 ld [wAudioFadeOutControl], a call StopAllMusic -.asm_e8f4a +.wait_music_stop ld a, [wAudioFadeOutControl] and a - jr nz, .asm_e8f4a + jr nz, .wait_music_stop ret -Func_e8f51: ; e8f51 (3a:4f51) - ld a, [$c970] +GBPrinter_CheckForErrors: ; e8f51 (3a:4f51) + ld a, [wPrinterHandshake] cp $81 - jr z, .asm_e8f62 - ld a, [$c971] + jr z, .check_other_errors + ld a, [wPrinterStatusFlags] cp $ff - jr z, .asm_e8f7c + jr z, .error2 xor a - jr .asm_e8f7e + jr .load_status -.asm_e8f62 - ld a, [$c971] - and $e0 +.check_other_errors + ld a, [wPrinterStatusFlags] + and %11100000 ret z bit 7, a - jr nz, .asm_e8f78 + jr nz, .error1 bit 6, a - jr nz, .asm_e8f74 - ld a, 6 - jr .asm_e8f7e - -.asm_e8f74 - ld a, 7 - jr .asm_e8f7e - -.asm_e8f78 - ld a, 4 - jr .asm_e8f7e - -.asm_e8f7c - ld a, 5 -.asm_e8f7e - ld [wcae0], a + jr nz, .error4 + ; error 3 + ld a, PRINTER_ERROR_3 + jr .load_status + +.error4 + ld a, PRINTER_ERROR_4 + jr .load_status + +.error1 + ld a, PRINTER_ERROR_1 + jr .load_status + +.error2 + ld a, PRINTER_ERROR_2 +.load_status + ld [wPrinterStatusIndicator], a ret -Func_e8f82: - ld a, [wcae0] +GBPrinter_UpdateStatusMessage: + ld a, [wPrinterStatusIndicator] and a ret z push af @@ -1175,7 +575,7 @@ Func_e8f82: pop af ld e, a ld d, $0 - ld hl, Table_e8fca + ld hl, .PrinterStatusMessages add hl, de add hl, de ld e, [hl] @@ -1184,64 +584,64 @@ Func_e8f82: coord hl, 1, 7 call PlaceString coord hl, 2, 15 - ld de, String_e8fb8 + ld de, .PressBToCancel call PlaceString ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a xor a - ld [wcae0], a + ld [wPrinterStatusIndicator], a ret -String_e8fb8: +.PressBToCancel: db "Press B to Cancel@" -Table_e8fca: - dw String_e8fdc - dw String_e8fdd - dw String_e8ff0 - dw String_e9003 - dw String_e9014 - dw String_e9049 - dw String_e907e - dw String_e90b3 - dw String_e90e8 - -String_e8fdc: +.PrinterStatusMessages: + dw .Blank + dw .CheckingLink + dw .Transmitting + dw .Printing + dw .Error1 + dw .Error2 + dw .Error3 + dw .Error4 + dw .WrongDevice + +.Blank: db "@" -String_e8fdd: +.CheckingLink: db "" next " CHECKING LINK...@" -String_e8ff0: +.Transmitting: db "" next " TRANSMITTING...@" -String_e9003: +.Printing: db "" next " PRINTING...@" -String_e9014: +.Error1: db " Printer Error 1" next "" next "Check the Game Boy" next "Printer Manual.@" -String_e9049: +.Error2: db " Printer Error 2" next "" next "Check the Game Boy" next "Printer Manual.@" -String_e907e: +.Error3: db " Printer Error 3" next "" next "Check the Game Boy" next "Printer Manual.@" -String_e90b3: +.Error4: db " Printer Error 4" next "" next "Check the Game Boy" next "Printer Manual.@" -String_e90e8: +.WrongDevice: db "This is not the" next "Game Boy Printer!@" -Func_e910a: +Printer_PrepareSurfingMinigameHighScoreTileMap: call GBPalWhiteOutWithDelay3 call ClearScreen ld de, SurfingPikachu2Graphics @@ -1249,14 +649,14 @@ Func_e910a: lb bc, BANK(SurfingPikachu2Graphics), (SurfingPikachu2GraphicsEnd - SurfingPikachu2Graphics) / $10 call CopyVideoData coord hl, 0, 0 - call Func_e91a9 + call .PlaceRowAlternatingTiles coord hl, 0, 17 - call Func_e91a9 + call .PlaceRowAlternatingTiles coord hl, 0, 0 - call Func_e91b5 + call .PlaceColumnAlternatingTiles coord hl, 19, 0 - call Func_e91b5 - ld a, $04 + call .PlaceColumnAlternatingTiles + ld a, $4 coord hl, 0, 0 ld [hl], a coord hl, 0, 17 @@ -1265,41 +665,41 @@ Func_e910a: ld [hl], a coord hl, 19, 17 ld [hl], a - ld de, Data_e91c4 + ld de, .Tilemap1 coord hl, 10, 8 lb bc, 3, 8 - call Func_e925d - ld de, Data_e91dc + call Diploma_Surfing_CopyBox + ld de, .Tilemap2 coord hl, 2, 11 lb bc, 6, 16 - call Func_e925d - ld de, String_e923c + call Diploma_Surfing_CopyBox + ld de, .PikachusBeachString coord hl, 3, 2 call PlaceString - ld de, String_e924b + ld de, .HiScoreString coord hl, 9, 4 call PlaceString - ld de, String_e9256 + ld de, .PointsString coord hl, 12, 6 call PlaceString ld de, wPlayerName ld hl, wPlayerName ld bc, 0 -.asm_e9182 +.find_end_of_name ld a, [hli] inc c cp "@" - jr nz, .asm_e9182 + jr nz, .find_end_of_name ld a, 8 sub c - jr nc, .asm_e918e + jr nc, .got_name_length xor a -.asm_e918e +.got_name_length ld c, a coord hl, 2, 4 add hl, bc call PlaceString - call Func_e926f + call CopySurfingMinigameScore ld b, 8 call RunPaletteCommand ld a, $1 @@ -1308,35 +708,35 @@ Func_e910a: call GBPalNormal ret -Func_e91a9: +.PlaceRowAlternatingTiles: ld c, SCREEN_WIDTH / 2 -.asm_e91ab - ld [hl], $00 +.row_loop + ld [hl], $0 inc hl - ld [hl], $01 + ld [hl], $1 inc hl dec c - jr nz, .asm_e91ab + jr nz, .row_loop ret -Func_e91b5: +.PlaceColumnAlternatingTiles: ld c, SCREEN_HEIGHT / 2 ld de, SCREEN_WIDTH -.asm_e91ba - ld [hl], $02 +.col_loop + ld [hl], $2 add hl, de - ld [hl], $03 + ld [hl], $3 add hl, de dec c - jr nz, .asm_e91ba + jr nz, .col_loop ret -Data_e91c4: + +.Tilemap1: db $7f, $7f, $10, $11, $12, $13, $14, $15 db $0f, $3c, $3d, $3e, $20, $21, $30, $31 db $4c, $4d, $4e, $50, $34, $1a, $51, $2d - -Data_e91dc: +.Tilemap2: db $7f, $7f, $7f, $7f, $7f, $7f, $16, $17, $18, $19, $7f, $1b, $1c, $1d, $1e, $1f db $7f, $7f, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c, $7f, $2e, $2f db $7f, $7f, $32, $33, $33, $35, $36, $37, $38, $39, $3a, $3b, $7f, $7f, $7f, $3f @@ -1344,39 +744,38 @@ Data_e91dc: db $52, $52, $52, $53, $54, $55, $56, $57, $58, $59, $5a, $5b, $5c, $5d, $5d, $5e db $7f, $7f, $7f, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $7f, $7f, $7f - -String_e923c: +.PikachusBeachString: db "Pikachu's Beach@" -String_e924b: +.HiScoreString: db "'s Hi-Score@" -String_e9256: +.PointsString: db "Points@" -Func_e925d: -.asm_e925d +Diploma_Surfing_CopyBox: +.y push bc push hl -.asm_e925f +.x ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_e925f + jr nz, .x pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_e925d + jr nz, .y ret -Func_e926f: - ld de, wd496 +CopySurfingMinigameScore: + ld de, wSurfingMinigameHiScore + 1 coord hl, 7, 6 ld a, [de] - call Func_e927a + call .BCDConvertScore ld a, [de] -Func_e927a: +.BCDConvertScore: ld c, a swap a and $f @@ -1392,80 +791,79 @@ Func_e927a: SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp" SurfingPikachu2GraphicsEnd: -Func_e988a: +PrintPCBox_DrawPage1: xor a ld [wBoxNumString], a call ClearScreen - call Func_e99de + call PrintPCBox_PlaceHorizontalLines coord hl, 0, 0 ld bc, 11 * SCREEN_WIDTH ld a, " " call FillMemory - call Func_e99b9 - call Func_e99a7 + call PrintPCBox_DrawLeftAndRightBorders + call PrintPCBox_DrawTopBorder coord hl, 4, 4 - ld de, String_e98db + ld de, .PokemonListString call PlaceString coord hl, 7, 6 - ld de, String_e98e8 + ld de, .BoxString call PlaceString coord hl, 11, 6 ld a, [wCurrentBoxNum] and $7f cp 9 - jr c, .asm_e98cc + jr c, .less_than_9 sub 9 ld [hl], "1" inc hl add "0" - jr .asm_e98ce + jr .placed_box_number -.asm_e98cc +.less_than_9 add "1" -.asm_e98ce +.placed_box_number ld [hl], a coord hl, 4, 9 ld de, wBoxSpecies - ld c, $03 - call Func_e994e + ld c, $3 + call PrintPCBox_PlaceBoxMonInfo ret +.PokemonListString: db "POKéMON LIST@" +.BoxString: db "BOX@" -String_e98db: db "POKéMON LIST@" -String_e98e8: db "BOX@" - -Func_e98ec: +PrintPCBox_DrawPage2: call ClearScreen - call Func_e99de - call Func_e99b9 + call PrintPCBox_PlaceHorizontalLines + call PrintPCBox_DrawLeftAndRightBorders ld a, [wBoxDataStart] cp 4 ret c coord hl, 4, 0 ld de, wBoxSpecies + 3 ld c, 6 - call Func_e994e + call PrintPCBox_PlaceBoxMonInfo ret -Func_e9907: +PrintPCBox_DrawPage3: call ClearScreen - call Func_e99de - call Func_e99b9 + call PrintPCBox_PlaceHorizontalLines + call PrintPCBox_DrawLeftAndRightBorders ld a, [wBoxDataStart] cp 10 ret c coord hl, 4, 0 ld de, wBoxSpecies + 9 ld c, 6 - call Func_e994e + call PrintPCBox_PlaceBoxMonInfo ret -Func_e9922: +PrintPCBox_DrawPage4: call ClearScreen - call Func_e99de - call Func_e99b9 + call PrintPCBox_PlaceHorizontalLines + call PrintPCBox_DrawLeftAndRightBorders coord hl, 0, 15 - call Func_e99cf + call PrintPCBox_DrawBottomBorderAtHL coord hl, 0, 16 ld bc, 2 * SCREEN_WIDTH ld a, " " @@ -1476,18 +874,18 @@ Func_e9922: coord hl, 4, 0 ld de, wBoxSpecies + 15 ld c, 5 - call Func_e994e + call PrintPCBox_PlaceBoxMonInfo ret -Func_e994e: -.asm_e994e +PrintPCBox_PlaceBoxMonInfo: +.loop ld a, c and a - jr z, .asm_e99a6 + jr z, .done dec c ld a, [de] cp $ff - jr z, .asm_e99a6 + jr z, .done ld [wd11e], a push bc push hl @@ -1529,73 +927,73 @@ Func_e994e: add hl, bc pop bc inc de - jr .asm_e994e + jr .loop -.asm_e99a6 +.done ret -Func_e99a7: +PrintPCBox_DrawTopBorder: coord hl, 0, 0 ld a, $79 ld [hli], a ld a, $7a ld c, SCREEN_WIDTH - 2 -.asm_e99b1 +.loop ld [hli], a dec c - jr nz, .asm_e99b1 + jr nz, .loop ld a, $7b ld [hl], a ret -Func_e99b9: +PrintPCBox_DrawLeftAndRightBorders: coord hl, 0, 0 ld de, SCREEN_WIDTH - 1 ld c, SCREEN_HEIGHT -.asm_e99c1 +.loop ld a, $7c ld [hl], a add hl, de ld a, $7c ld [hli], a dec c - jr nz, .asm_e99c1 + jr nz, .loop ret -Func_e99cc: +PrintPCBox_DrawBottomBorder: coord hl, 0, 17 -Func_e99cf: +PrintPCBox_DrawBottomBorderAtHL: ld a, $7d ld [hli], a ld a, $7a ld c, SCREEN_WIDTH - 2 -.asm_e99b1 +.loop ld [hli], a dec c - jr nz, .asm_e99b1 + jr nz, .loop ld a, $7e ld [hl], a ret -Func_e99de: +PrintPCBox_PlaceHorizontalLines: coord hl, 4, 0 ld c, 6 - call Func_e99eb + call .PlaceHorizontalLine coord hl, 6, 1 ld c, 6 -Func_e99eb: -.asm_e99eb +.PlaceHorizontalLine: +.loop push bc push hl - ld de, String_e99fd + ld de, .HorizontalLineString call PlaceString pop hl ld bc, 3 * SCREEN_WIDTH add hl, bc pop bc dec c - jr nz, .asm_e99eb + jr nz, .loop ret -String_e99fd: +.HorizontalLineString: db "----------@" |