diff options
Diffstat (limited to 'engine/printer.asm')
-rwxr-xr-x | engine/printer.asm | 1253 |
1 files changed, 354 insertions, 899 deletions
diff --git a/engine/printer.asm b/engine/printer.asm index 876e59efc..7dd2d4f4a 100755 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -1,814 +1,227 @@ -Function84000: ; 84000 - ld hl, OverworldMap - lb bc, 4, 12 - xor a - call Function842ab - xor a - ld [rSB], a - ld [rSC], a - ld [wc2d5], a - ld hl, wc2d4 - set 0, [hl] - ld a, [GBPrinter] - ld [wcbfb], a - xor a - ld [wJumptableIndex], a - ret -; 84022 - -Function84022: ; 84022 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .Jumptable -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 84031 - - -.Jumptable: ; 84031 (21:4031) - - dw Function84077 - dw Function84143 - dw Function84120 - dw Function84099 - dw Function84180 - dw Function8412e - dw Function840c5 - dw Function84180 - dw Function84120 - dw Function840de - dw Function84180 - dw Function84120 - dw Function841a1 - dw Function84063 - dw Function8406d - dw Function84120 - dw Function84103 - dw Function84071 - dw Function841b0 - dw Function841b3 - - -Function84059: ; 84059 (21:4059) - ld hl, wJumptableIndex - inc [hl] - ret - -Function8405e: ; 8405e (21:405e) - ld hl, wJumptableIndex - dec [hl] - ret - -Function84063: ; 84063 (21:4063) - xor a - ld [wca89], a - ld hl, wJumptableIndex - set 7, [hl] - ret - -Function8406d: ; 8406d (21:406d) - call Function84059 - ret - -Function84071: ; 84071 (21:4071) - ld a, $1 - ld [wJumptableIndex], a - ret - -Function84077: ; 84077 (21:4077) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ld a, $1 - ld [wcbf8], a - ret - -Function84099: ; 84099 (21:4099) - call Function841fb - ld hl, wca81 - ld a, [hl] - and a - jr z, Function840c5 - ld hl, Unknown_842c3 - call Function841e2 - call Function84260 - ld a, $80 - ld [wca8e], a - ld a, $2 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $2 - ld [wcbf8], a - ret - -Function840c5: ; 840c5 (21:40c5) - ld a, $6 - ld [wJumptableIndex], a - ld hl, Unknown_842c9 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - call Function84059 - call Function841c3 - ret - -Function840de: ; 840de (21:40de) - call Function841fb - ld hl, Unknown_842bd - call Function841e2 - call Function84249 - ld a, $4 - ld [wca8e], a - ld a, $0 - ld [wca8f], a - call Function84219 - call Function84059 - call Function841c3 - ld a, $3 - ld [wcbf8], a - ret - -Function84103: ; 84103 (21:4103) - call Function841fb - ld hl, Unknown_842b7 - call Function841e2 - xor a - ld [wca8e], a - ld [wca8f], a - ld a, [wcf65] - ld [wca81], a - call Function84059 - call Function841c3 - ret - -Function84120: ; 84120 (21:4120) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - call Function84059 - ret - -Function8412e: ; 8412e (21:412e) - ld hl, wca8b - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - ld hl, wca81 - dec [hl] - call Function8405e - call Function8405e - ret - -Function84143: ; 84143 (21:4143) - ld a, [wc2d5] - and a - ret nz - ld a, [wca88] - cp $ff - jr nz, .printer_connected - ld a, [wca89] - cp $ff - jr z, .printer_error - -.printer_connected - ld a, [wca88] - cp $81 - jr nz, .printer_error - ld a, [wca89] - cp $0 - jr nz, .printer_error - ld hl, wc2d4 - set 1, [hl] - ld a, $5 - ld [wca8a], a - call Function84059 - ret - -.printer_error - ld a, $ff - ld [wca88], a - ld [wca89], a - ld a, $e - ld [wJumptableIndex], a - ret - -Function84180: ; 84180 (21:4180) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - jr nz, .asm_8419b - ld a, [wca89] - and $1 - jr nz, .asm_84197 - call Function84059 - ret -.asm_84197 - call Function8405e - ret -.asm_8419b - ld a, $12 - ld [wJumptableIndex], a - ret - -Function841a1: ; 841a1 (21:41a1) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f3 - ret nz - call Function84059 - ret - -Function841b0: ; 841b0 (21:41b0) - call Function84059 - -Function841b3: ; 841b3 (21:41b3) - ld a, [wc2d5] - and a - ret nz - ld a, [wca89] - and $f0 - ret nz - xor a - ld [wJumptableIndex], a - ret - -Function841c3: ; 841c3 (21:41c3) - ld a, [wc2d5] - and a - jr nz, Function841c3 - xor a - ld [wca8c], a - ld [wca8d], a - ld a, $1 - ld [wc2d5], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function841e2: ; 841e2 (21:41e2) - ld a, [hli] - ld [wca82], a - ld a, [hli] - ld [wca83], a - ld a, [hli] - ld [wca84], a - ld a, [hli] - ld [wca85], a - ld a, [hli] - ld [wca86], a - ld a, [hl] - ld [wca87], a - ret - -Function841fb: ; 841fb (21:41fb) - xor a - ld hl, wca82 -rept 3 - ld [hli], a -endr - ld [hl], a - ld hl, wca86 - ld [hli], a - ld [hl], a - xor a - ld [wca8e], a - ld [wca8f], a - ld hl, OverworldMap - ld bc, $280 - call Function842ab - ret - -Function84219: ; 84219 (21:4219) - ld hl, 0 - ld bc, $4 - ld de, wca82 - call Function8423c - ld a, [wca8e] - ld c, a - ld a, [wca8f] - ld b, a - ld de, OverworldMap - call Function8423c - ld a, l - ld [wca86], a - ld a, h - ld [wca87], a - ret - -Function8423c: ; 8423c (21:423c) - ld a, [de] - inc de - add l - jr nc, .asm_84242 - inc h -.asm_84242 - ld l, a - dec bc - ld a, c - or b - jr nz, Function8423c - ret - -Function84249: ; 84249 (21:4249) - ld a, $1 - ld [OverworldMap], a - ld a, [wcbfa] - ld [wc801], a - ld a, $e4 - ld [wc802], a - ld a, [wcbfb] - ld [wc803], a - ret - -Function84260: ; 84260 (21:4260) - ld a, [wca81] - xor $ff - ld d, a - ld a, [wcf65] - inc a - add d - ld hl, wca90 - ld de, $28 -.asm_84271 - and a - jr z, .asm_84278 - add hl, de - dec a - jr .asm_84271 -.asm_84278 - ld e, l - ld d, h - ld hl, OverworldMap - ld c, $28 -.asm_8427f - ld a, [de] - inc de - push bc - push de - push hl - swap a - ld d, a - and $f0 - ld e, a - ld a, d - and $f - ld d, a - and $8 - ld a, d - jr nz, .asm_84297 - or $90 - jr .asm_84299 -.asm_84297 - or $80 -.asm_84299 - ld d, a - lb bc, $21, 1 - call Request2bpp - pop hl - ld de, $10 - add hl, de - pop de - pop bc - dec c - jr nz, .asm_8427f - ret - -Function842ab: ; 842ab - push de - ld e, a -.asm_842ad - ld [hl], e - inc hl - dec bc - ld a, c - or b - jr nz, .asm_842ad - ld a, e - pop de - ret -; 842b7 - -Unknown_842b7: db 1, 0, $00, 0, 1, 0 -Unknown_842bd: db 2, 0, $04, 0, 0, 0 -Unknown_842c3: db 4, 0, $80, 2, 0, 0 -Unknown_842c9: db 4, 0, $00, 0, 4, 0 -Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused -Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused -; 842db - - -_PrinterReceive:: ; 842db - ld a, [wc2d5] - add a - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 842ea - - -.Jumptable: ; 842ea (21:42ea) - - dw Function8432f - dw Function84330 - dw Function84339 - dw Function84343 - dw Function8434d - dw Function84357 - dw Function84361 - dw Function8438b - dw Function84395 - dw Function8439f - dw Function843a8 - dw Function843b6 - dw Function84330 - dw Function843c0 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843c0 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843e6 - dw Function84330 - dw Function843d2 - dw Function843c9 - dw Function843c9 - dw Function843c9 - dw Function843d2 - dw Function843c9 - dw Function8439f - dw Function843a8 - dw Function843b6 - - -Function8432a: ; 8432a (21:432a) - ld hl, wc2d5 - inc [hl] - ret - -Function8432f: ; 8432f (21:432f) - ret - -Function84330: ; 84330 (21:4330) - ld a, $33 - call Function843db - call Function8432a - ret - -Function84339: ; 84339 (21:4339) - ld a, [wca82] - call Function843db - call Function8432a - ret - -Function84343: ; 84343 (21:4343) - ld a, [wca83] - call Function843db - call Function8432a - ret - -Function8434d: ; 8434d (21:434d) - ld a, [wca84] - call Function843db - call Function8432a - ret - -Function84357: ; 84357 (21:4357) - ld a, [wca85] - call Function843db - call Function8432a - ret - -Function84361: ; 84361 (21:4361) - ld hl, wca8e - ld a, [hli] - ld d, [hl] - ld e, a - or d - jr z, .asm_84388 - dec de - ld [hl], d - dec hl - ld [hl], e - ld a, [wca8c] - ld e, a - ld a, [wca8d] - ld d, a - ld hl, OverworldMap - add hl, de - inc de - ld a, e - ld [wca8c], a - ld a, d - ld [wca8d], a - ld a, [hl] - call Function843db - ret -.asm_84388 - call Function8432a - -Function8438b: ; 8438b (21:438b) - ld a, [wca86] - call Function843db - call Function8432a - ret - -Function84395: ; 84395 (21:4395) - ld a, [wca87] - call Function843db - call Function8432a - ret - -Function8439f: ; 8439f (21:439f) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843a8: ; 843a8 (21:43a8) - ld a, [rSB] - ld [wca88], a - ld a, $0 - call Function843db - call Function8432a - ret - -Function843b6: ; 843b6 (21:43b6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843c0: ; 843c0 (21:43c0) - ld a, $f - call Function843db - call Function8432a - ret +INCLUDE "engine/printer/serial.asm" -Function843c9: ; 843c9 (21:43c9) - ld a, $0 - call Function843db - call Function8432a - ret - -Function843d2: ; 843d2 (21:43d2) - ld a, $8 - call Function843db - call Function8432a - ret - -Function843db: ; 843db (21:43db) - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Function843e6: ; 843e6 (21:43e6) - ld a, [rSB] - ld [wca89], a - xor a - ld [wc2d5], a - ret - -Function843f0: ; 843f0 -.asm_843f0 +SendScreenToPrinter: ; 843f0 +.loop call JoyTextDelay - call Function846f6 - jr c, .asm_8440f + call CheckCancelPrint + jr c, .cancel ld a, [wJumptableIndex] bit 7, a - jr nz, .asm_8440d - call Function84022 - call Function84757 - call Function84785 + jr nz, .finished + call PrinterJumptableIteration + call CheckPrinterStatus + call PlacePrinterStatusString call DelayFrame - jr .asm_843f0 + jr .loop -.asm_8440d +.finished and a ret -.asm_8440f +.cancel scf ret ; 84411 -Function84411: ; 84411 +Printer_CleanUpAfterSend: ; 84411 xor a - ld [wc2d4], a - ld [wc2d5], a + ld [wPrinterConnectionOpen], a + ld [wPrinterOpcode], a ret ; 84419 -Function84419: ; 84419 +Printer_PrepareTileMapForPrint: ; 84419 push af - call Function84000 + call Printer_StartTransmission pop af ld [wcbfa], a - call Function84728 + call Printer_CopyTileMapToBuffer ret ; 84425 -Function84425: ; 84425 +Printer_ExitPrinter: ; 84425 call ReturnToMapFromSubmenu - call Function84753 + call Printer_RestartMapMusic ret ; 8442c PrintDexEntry: ; 8442c - ld a, [wcf65] + ld a, [wPrinterQueueLength] push af + ld hl, VTiles1 ld de, FontInversed lb bc, BANK(FontInversed), $80 call Request1bpp + xor a ld [hPrinter], a - call Function8474c + call Printer_PlayMusic + ld a, [rIE] push af xor a ld [rIF], a ld a, $9 ld [rIE], a - call Function84000 + + call Printer_StartTransmission ld a, $10 ld [wcbfa], a callba PrintPage1 call ClearTileMap - ld a, $e4 + ld a, %11100100 call DmgToCgbBGPals call DelayFrame + ld hl, hVBlank ld a, [hl] push af ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_8449d - call Function84411 + + ld a, 8 ; 16 rows + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter + jr c, .skip_second_page ; canceled or got an error + + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames xor a ld [hBGMapMode], a - call Function84000 + + call Printer_StartTransmission ld a, $3 ld [wcbfa], a callba PrintPage2 - call Function84742 - ld a, $4 - ld [wcf65], a - call Function843f0 + call Printer_ResetJoypadRegisters + ld a, 4 + ld [wPrinterQueueLength], a + call SendScreenToPrinter -.asm_8449d +.skip_second_page pop af ld [hVBlank], a - call Function84411 + call Printer_CleanUpAfterSend + xor a ld [rIF], a pop af ld [rIE], a - call Function84425 - ld c, $8 -.asm_844ae + + call Printer_ExitPrinter + ld c, 8 +.low_volume_delay_frames call LowVolume call DelayFrame dec c - jr nz, .asm_844ae + jr nz, .low_volume_delay_frames + pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret ; 844bc PrintPCBox: ; 844bc (21:44bc) - ld a, [wcf65] + ld a, [wPrinterQueueLength] push af - ld a, $9 - ld [wcf65], a + ld a, 18 / 2 + ld [wPrinterQueueLength], a + ld a, e - ld [wd004], a + ld [wAddrOfBoxToPrint], a ld a, d - ld [wd005], a + ld [wAddrOfBoxToPrint + 1], a ld a, b - ld [wd006], a + ld [wBankOfBoxToPrint], a ld a, c - ld [wd007], a + ld [wWhichBoxToPrint], a + xor a ld [hPrinter], a - ld [wd003], a - call Function8474c + ld [wFinishedPrintingBox], a + call Printer_PlayMusic + ld a, [rIE] push af xor a ld [rIF], a - ld a, $9 + ld a, %1001 ld [rIE], a + ld hl, hVBlank ld a, [hl] push af - ld [hl], $4 + ld [hl], %0100 + xor a ld [hBGMapMode], a - call Function84817 - ld a, $10 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 + call PrintPCBox_Page1 + ld a, $10 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames xor a ld [hBGMapMode], a - call Function8486f - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 + call PrintPCBox_Page2 + ld a, $0 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames + xor a ld [hBGMapMode], a - call Function84893 - ld a, $0 - call Function84419 - call Function84559 - jr c, .asm_84545 - call Function84411 + call PrintPCBox_Page3 + ld a, $0 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + call Printer_ResetRegistersAndStartDataSend + jr c, .cancel + + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames + xor a ld [hBGMapMode], a - call Function848b7 - ld a, $3 - call Function84419 - call Function84559 -.asm_84545 + call PrintPCBox_Page4 + ld a, $3 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + call Printer_ResetRegistersAndStartDataSend +.cancel pop af ld [hVBlank], a - call Function84411 + call Printer_CleanUpAfterSend + xor a ld [rIF], a pop af ld [rIE], a - call Function84425 + call Printer_ExitPrinter + pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret -Function84559: ; 84559 (21:4559) - call Function84742 - call Function843f0 +Printer_ResetRegistersAndStartDataSend: ; 84559 (21:4559) + call Printer_ResetJoypadRegisters + call SendScreenToPrinter ret PrintUnownStamp: ; 84560 - ld a, [wcf65] + ld a, [wPrinterQueueLength] push af xor a ld [hPrinter], a - call Function8474c + call Printer_PlayMusic ld a, [rIE] push af xor a @@ -822,248 +235,274 @@ PrintUnownStamp: ; 84560 xor a ld [hBGMapMode], a call LoadTileMapToTempTileMap - callba Function16dac - ld a, $0 - call Function84419 + callba PlaceUnownPrinterFrontpic + ld a, $0 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a -.asm_84597 + call Printer_ResetJoypadRegisters + ld a, 18 / 2 + ld [wPrinterQueueLength], a +.loop call JoyTextDelay - call Function846f6 - jr c, .asm_845c0 + call CheckCancelPrint + jr c, .done ld a, [wJumptableIndex] bit 7, a - jr nz, .asm_845c0 - call Function84022 + jr nz, .done + call PrinterJumptableIteration ld a, [wJumptableIndex] cp $2 - jr nc, .asm_845b5 - ld a, $3 - ld [wca81], a + jr nc, .check_status + ld a, 6 / 2 + ld [wPrinterRowIndex], a -.asm_845b5 - call Function84757 - call Function84785 +.check_status + call CheckPrinterStatus + call PlacePrinterStatusString call DelayFrame - jr .asm_84597 + jr .loop -.asm_845c0 +.done pop af ld [hVBlank], a - call Function84411 + call Printer_CleanUpAfterSend call Call_LoadTempTileMapToTileMap xor a ld [rIF], a pop af ld [rIE], a pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret ; 845d4 PrintMail: ; 845d4 - call Function845db - call Function84425 + call PrintMail_ + call Printer_ExitPrinter ret ; 845db -Function845db: ; 845db - ld a, [wcf65] +PrintMail_: ; 845db + ld a, [wPrinterQueueLength] push af xor a ld [hPrinter], a - call Function8474c + call Printer_PlayMusic + ld a, [rIE] push af xor a ld [rIF], a - ld a, $9 + ld a, %1001 ld [rIE], a + xor a ld [hBGMapMode], a - ld a, $13 - call Function84419 + + ld a, $13 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint ld hl, hVBlank ld a, [hl] push af - ld [hl], $4 - ld a, $9 - ld [wcf65], a - call Function843f0 + ld [hl], %0100 + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter + pop af ld [hVBlank], a - call Function84411 - call Function84735 + call Printer_CleanUpAfterSend + call Printer_CopyBufferToTileMap + xor a ld [rIF], a pop af ld [rIE], a + pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret ; 8461a PrintPartymon: ; 8461a - ld a, [wcf65] + ld a, [wPrinterQueueLength] push af xor a ld [hPrinter], a - call Function8474c + call Printer_PlayMusic + ld a, [rIE] push af xor a ld [rIF], a - ld a, $9 + ld a, %1001 ld [rIE], a + xor a ld [hBGMapMode], a - callba Function1dc381 - ld a, $10 - call Function84419 + callba PrintPartyMonPage1 + ld a, $10 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + ld hl, hVBlank ld a, [hl] push af - ld [hl], $4 - ld a, $8 - ld [wcf65], a - call Function84742 - call Function843f0 - jr c, .asm_84671 - call Function84411 + ld [hl], %0100 + + ld a, 16 / 2 + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter + jr c, .cancel + + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames + xor a ld [hBGMapMode], a - callba Function1dc47b - ld a, $3 - call Function84419 - ld a, $9 - ld [wcf65], a - call Function84742 - call Function843f0 - -.asm_84671 + callba PrintPartyMonPage2 + ld a, $3 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call Printer_ResetJoypadRegisters + call SendScreenToPrinter +.cancel pop af ld [hVBlank], a - call Function84411 - call Function84735 + call Printer_CleanUpAfterSend + + call Printer_CopyBufferToTileMap xor a ld [rIF], a pop af ld [rIE], a - call Function84425 + call Printer_ExitPrinter + pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret ; 84688 _PrintDiploma: ; 84688 - ld a, [wcf65] + ld a, [wPrinterQueueLength] push af - callba Function1dd709 + + callba PlaceDiplomaOnScreen + xor a ld [hPrinter], a - call Function8474c + call Printer_PlayMusic + ld a, [rIE] push af xor a ld [rIF], a - ld a, $9 + ld a, %1001 ld [rIE], a + ld hl, hVBlank ld a, [hl] push af - ld [hl], $4 - ld a, $10 - call Function84419 - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 - jr c, .asm_846e2 - call Function84411 + ld [hl], %0100 + + ld a, $10 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint + call Printer_ResetJoypadRegisters + + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter + jr c, .cancel + call Printer_CleanUpAfterSend ld c, 12 call DelayFrames + call LoadTileMapToTempTileMap xor a ld [hBGMapMode], a - callba Function1dd7ae - ld a, $3 - call Function84419 + + callba PrintDiplomaPage2 + + ld a, $3 ; to be loaded to wcbfa + call Printer_PrepareTileMapForPrint call Call_LoadTempTileMapToTileMap - call Function84742 - ld a, $9 - ld [wcf65], a - call Function843f0 + call Printer_ResetJoypadRegisters -.asm_846e2 + ld a, 18 / 2 + ld [wPrinterQueueLength], a + call SendScreenToPrinter +.cancel pop af ld [hVBlank], a - call Function84411 + call Printer_CleanUpAfterSend + xor a ld [rIF], a pop af ld [rIE], a - call Function84425 + call Printer_ExitPrinter + pop af - ld [wcf65], a + ld [wPrinterQueueLength], a ret ; 846f6 -Function846f6: ; 846f6 +CheckCancelPrint: ; 846f6 ld a, [hJoyDown] and B_BUTTON - jr nz, .asm_846fe + jr nz, .pressed_b and a ret -.asm_846fe +.pressed_b ld a, [wca80] cp $c - jr nz, .asm_84722 -.asm_84705 - ld a, [wc2d5] + jr nz, .cancel +.loop + ld a, [wPrinterOpcode] and a - jr nz, .asm_84705 - ld a, $16 - ld [wc2d5], a + jr nz, .loop + ld a, $16 ; cancel + ld [wPrinterOpcode], a ld a, $88 ld [rSB], a ld a, $1 ld [rSC], a ld a, $81 ld [rSC], a -.asm_8471c - ld a, [wc2d5] +.loop2 + ld a, [wPrinterOpcode] and a - jr nz, .asm_8471c + jr nz, .loop2 -.asm_84722 +.cancel ld a, $1 ld [hPrinter], a scf ret ; 84728 -Function84728: ; 84728 +Printer_CopyTileMapToBuffer: ; 84728 hlcoord 0, 0 - ld de, wca90 + ld de, wPrinterTileMapBuffer ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call CopyBytes ret ; 84735 -Function84735: ; 84735 - ld hl, wca90 +Printer_CopyBufferToTileMap: ; 84735 + ld hl, wPrinterTileMapBuffer decoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT call CopyBytes ret ; 84742 -Function84742: ; 84742 +Printer_ResetJoypadRegisters: ; 84742 xor a ld [hJoyReleased], a ld [hJoyPressed], a @@ -1072,27 +511,29 @@ Function84742: ; 84742 ret ; 8474c -Function8474c: ; 8474c +Printer_PlayMusic: ; 8474c ld de, MUSIC_PRINTER call PlayMusic2 ret ; 84753 -Function84753: ; 84753 +Printer_RestartMapMusic: ; 84753 call RestartMapMusic ret ; 84757 -Function84757: ; 84757 - ld a, [wca88] +CheckPrinterStatus: ; 84757 +; Check for printer errors +; If [ca88] == -1, we're disconnected + ld a, [wPrinterHandshake] cp -1 jr nz, .printer_connected - ld a, [wca89] + ld a, [wPrinterStatusFlags] cp -1 jr z, .error_2 - .printer_connected - ld a, [wca89] +; ca89 contains printer status flags + ld a, [wPrinterStatusFlags] and %11100000 ret z ; no error @@ -1100,27 +541,31 @@ Function84757: ; 84757 jr nz, .error_1 bit 6, a jr nz, .error_4 - ld a, 6 ; error 3 + ; paper error + ld a, PRINTER_ERROR_3 jr .load_text_index .error_4 - ld a, 7 ; error 4 + ; temperature error + ld a, PRINTER_ERROR_4 jr .load_text_index .error_1 - ld a, 4 ; error 1 + ; printer battery low + ld a, PRINTER_ERROR_1 jr .load_text_index .error_2 - ld a, 5 ; error 2 - + ; connection error + ld a, PRINTER_ERROR_2 .load_text_index - ld [wcbf8], a + ld [wPrinterStatus], a ret ; 84785 -Function84785: ; 84785 - ld a, [wcbf8] +PlacePrinterStatusString: ; 84785 +; Print nonzero printer status + ld a, [wPrinterStatus] and a ret z push af @@ -1133,9 +578,8 @@ Function84785: ; 84785 ld e, a ld d, 0 ld hl, PrinterStatusStringPointers -rept 2 add hl, de -endr + add hl, de ld e, [hl] inc hl ld d, [hl] @@ -1148,12 +592,13 @@ endr ld a, $1 ld [hBGMapMode], a xor a - ld [wcbf8], a + ld [wPrinterStatus], a ret ; 847bd Function847bd: ; 847bd - ld a, [wcbf8] +; XXX + ld a, [wPrinterStatus] and a ret z push af @@ -1166,9 +611,8 @@ Function847bd: ; 847bd ld e, a ld d, 0 ld hl, PrinterStatusStringPointers -rept 2 add hl, de -endr + add hl, de ld e, [hl] inc hl ld d, [hl] @@ -1181,7 +625,7 @@ endr ld a, $1 ld [hBGMapMode], a xor a - ld [wcbf8], a + ld [wPrinterStatus], a ret ; 847f5 @@ -1190,34 +634,38 @@ String_PressBToCancel: ; 84807 PrinterStatusStringPointers: ; 84807 - dw String_1dc275 ; @ - dw String_1dc276 ; CHECKING LINK - dw String_1dc289 ; TRANSMITTING - dw String_1dc29c ; PRINTING - dw String_1dc2ad ; error 1 - dw String_1dc2e2 ; error 2 - dw String_1dc317 ; error 3 - dw String_1dc34c ; error 4 + dw GBPrinterString_Null ; @ + dw GBPrinterString_CheckingLink ; CHECKING LINK + dw GBPrinterString_Transmitting ; TRANSMITTING + dw GBPrinterString_Printing ; PRINTING + dw GBPrinterString_PrinterError1 ; error 1 + dw GBPrinterString_PrinterError2 ; error 2 + dw GBPrinterString_PrinterError3 ; error 3 + dw GBPrinterString_PrinterError4 ; error 4 ; 84817 -Function84817: ; 84817 (21:4817) +PrintPCBox_Page1: ; 84817 (21:4817) xor a - ld [wd002], a + ld [wWhichBoxMonToPrint], a hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill call Printer_PlaceEmptyBoxSlotString + hlcoord 0, 0 ld bc, 9 * SCREEN_WIDTH ld a, " " call ByteFill + call Printer_PlaceSideBorders call Printer_PlaceTopBorder + hlcoord 4, 3 ld de, .String_PokemonList call PlaceString - ld a, [wd007] + + ld a, [wWhichBoxToPrint] ld bc, BOX_NAME_LENGTH ld hl, wBoxNames call AddNTimes @@ -1225,11 +673,11 @@ Function84817: ; 84817 (21:4817) ld e, l hlcoord 6, 5 call PlaceString - ld a, $1 - call Function849c6 + ld a, 1 + call Printer_GetBoxMonSpecies hlcoord 2, 9 - ld c, $3 - call Function848e7 + ld c, 3 + call Printer_PrintBoxListSegment ret ; 84865 (21:4865) @@ -1237,41 +685,41 @@ Function84817: ; 84817 (21:4817) db "#MON LIST@" ; 8486f -Function8486f: ; 8486f (21:486f) +PrintPCBox_Page2: ; 8486f (21:486f) hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill call Printer_PlaceEmptyBoxSlotString call Printer_PlaceSideBorders - ld a, [wd003] + ld a, [wFinishedPrintingBox] and a ret nz - ld a, $4 - call Function849c6 + ld a, 4 + call Printer_GetBoxMonSpecies hlcoord 2, 0 - ld c, $6 - call Function848e7 + ld c, 6 + call Printer_PrintBoxListSegment ret -Function84893: ; 84893 (21:4893) +PrintPCBox_Page3: ; 84893 (21:4893) hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill call Printer_PlaceEmptyBoxSlotString call Printer_PlaceSideBorders - ld a, [wd003] + ld a, [wFinishedPrintingBox] and a ret nz - ld a, $a - call Function849c6 + ld a, 10 + call Printer_GetBoxMonSpecies hlcoord 2, 0 - ld c, $6 - call Function848e7 + ld c, 6 + call Printer_PrintBoxListSegment ret -Function848b7: ; 848b7 (21:48b7) +PrintPCBox_Page4: ; 848b7 (21:48b7) hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " @@ -1282,119 +730,126 @@ Function848b7: ; 848b7 (21:48b7) call ClearBox call Printer_PlaceSideBorders call Printer_PlaceBottomBorders - ld a, [wd003] + ld a, [wFinishedPrintingBox] and a ret nz - ld a, $10 - call Function849c6 + ld a, 16 + call Printer_GetBoxMonSpecies hlcoord 2, 0 - ld c, $5 - call Function848e7 + ld c, 5 + call Printer_PrintBoxListSegment ret -Function848e7: ; 848e7 (21:48e7) - ld a, [wd006] +Printer_PrintBoxListSegment: ; 848e7 (21:48e7) + ld a, [wBankOfBoxToPrint] call GetSRAMBank - -Function848ed: ; 848ed (21:48ed) +.loop ld a, c and a - jp z, Function84986 + jp z, .max_length dec c ld a, [de] cp $ff - jp z, Function84981 + jp z, .finish ld [wd265], a ld [CurPartySpecies], a + push bc push hl push de + push hl - ld bc, $10 + ld bc, 16 ld a, " " call ByteFill pop hl + push hl call GetBasePokemonName pop hl + push hl call PlaceString ld a, [CurPartySpecies] cp EGG pop hl jr z, .ok2 - ld bc, $b + + ld bc, PKMN_NAME_LENGTH add hl, bc - call Function8498a - ld bc, $9 + call Printer_GetMonGender + ld bc, SCREEN_WIDTH - PKMN_NAME_LENGTH add hl, bc ld a, "/" ld [hli], a + push hl - ld bc, $e + ld bc, 14 ld a, " " call ByteFill pop hl + push hl - ld a, [wd004] + ld a, [wAddrOfBoxToPrint] ld l, a - ld a, [wd005] + ld a, [wAddrOfBoxToPrint + 1] ld h, a - ld bc, $372 + ld bc, sBoxMonNicknames - sBox add hl, bc - ld bc, $b - ld a, [wd002] + ld bc, PKMN_NAME_LENGTH + ld a, [wWhichBoxMonToPrint] call AddNTimes ld e, l ld d, h pop hl + push hl call PlaceString pop hl - ld bc, $b + + ld bc, PKMN_NAME_LENGTH add hl, bc push hl - ld a, [wd004] + ld a, [wAddrOfBoxToPrint] ld l, a - ld a, [wd005] + ld a, [wAddrOfBoxToPrint + 1] ld h, a - ld bc, $35 + ld bc, 2 + MONS_PER_BOX + MON_LEVEL add hl, bc - ld bc, $20 - ld a, [wd002] + ld bc, BOXMON_STRUCT_LENGTH + ld a, [wWhichBoxMonToPrint] call AddNTimes ld a, [hl] pop hl - call Function383d + call PrintLevel_Force3Digits .ok2 - ld hl, wd002 + ld hl, wWhichBoxMonToPrint inc [hl] pop de pop hl - ld bc, $3c + ld bc, 3 * SCREEN_WIDTH add hl, bc pop bc inc de - jp Function848ed + jp .loop -Function84981: ; 84981 (21:4981) +.finish ld a, $1 - ld [wd003], a - -Function84986: ; 84986 (21:4986) + ld [wFinishedPrintingBox], a +.max_length call CloseSRAM ret -Function8498a: ; 8498a (21:498a) +Printer_GetMonGender: ; 8498a (21:498a) push hl - ld a, [wd004] + ld a, [wAddrOfBoxToPrint] ld l, a - ld a, [wd005] + ld a, [wAddrOfBoxToPrint + 1] ld h, a ld bc, $2b add hl, bc - ld bc, $20 - ld a, [wd002] + ld bc, BOXMON_STRUCT_LENGTH + ld a, [wWhichBoxMonToPrint] call AddNTimes ld de, TempMonDVs ld a, [hli] @@ -1402,28 +857,28 @@ Function8498a: ; 8498a (21:498a) inc de ld a, [hli] ld [de], a - ld a, [wd002] + ld a, [wWhichBoxMonToPrint] ld [CurPartyMon], a - ld a, $3 + ld a, TEMPMON ld [MonType], a callba GetGender - ld a, $7f - jr c, .asm_849c3 - ld a, $ef - jr nz, .asm_849c3 - ld a, $f5 -.asm_849c3 + ld a, " " + jr c, .got_gender + ld a, "♂" + jr nz, .got_gender + ld a, "♀" +.got_gender pop hl ld [hli], a ret -Function849c6: ; 849c6 (21:49c6) +Printer_GetBoxMonSpecies: ; 849c6 (21:49c6) push hl ld e, a ld d, $0 - ld a, [wd004] + ld a, [wAddrOfBoxToPrint] ld l, a - ld a, [wd005] + ld a, [wAddrOfBoxToPrint + 1] ld h, a add hl, de ld e, l |