;license:MIT ;(c) 2018-2021 by 4am & qkumba ; ; credits page ; ; Public functions ; - Credits ; - Help ; - LoadFulFile ; ;------------------------------------------------------------------------------ ; Credits ; display credits page and wait ; ; in: none ; out: C clear ; all other flags and registers clobbered ;------------------------------------------------------------------------------ Credits jsr LoadFile ; load credits text into $8000 !word kRootDirectory !word kCreditsFile !word $8000 -- jsr ForceHGRMode jsr ClearOffscreen ldx #0 - lda OffscreenPage ror ; draw on offscreen page +LDADDR $8000 jsr DrawPage ; draw credits jsr ShowOtherPage ; show credits jsr WaitForKeyFor30Seconds; wait bit CLEARKBD ; don't care about key cmp #$81 ; Ctrl-A = about beq Credits cmp #$90 ; Ctrl-P = launch joystick calibration program bne + jmp Joystick + cmp #$83 ; Ctrl-C = toggle cheat mode bne + jsr ToggleCheat + sec ; if called from search mode, tell caller to refresh rts ;------------------------------------------------------------------------------ ; Help ; display per-game or global help page and wait ; ; in: none ; out: see above ;------------------------------------------------------------------------------ Help jsr GetGameToLaunch bcs @global +ST16 ++ jsr LoadFile !word kRootDirectory !word kGameHelpIndexFile - !word $6000 jsr okvs_find !word - ++ !word $DFDF ; SMC +ST16 zpword jsr LoadFulFile !word kGameHelpFile !word $8000 clc bcc -- ; always branches @global jsr LoadFile ; load help text into $8000 !word kRootDirectory !word kHelpTextFile !word $8000 jsr LoadHelpOffscreen ; load fancy backdrop ldx #7 bne -- ; always branches ;------------------------------------------------------------------------------ ; LoadFulFile ; Load a *ful file (compiled okvs with offset value) into memory all at once ; ; in: stack contains 4 bytes of parameters: ; +1 [word] pointer to filename to open ; +3 [word] address of load destination ; zpword: pointer to okvs key field ; out: all flags clobbered ; all registers clobbered ;------------------------------------------------------------------------------ LoadFulFile +PARAMS_ON_STACK 4 +LDPARAM 1 +ST16 @filename +LDPARAM 3 +ST16 @address inc $BF0E ; disable ROM mapping on return ldx #2 ldy #0 lda (zpword), y tay - iny lda (zpword), y sta @offset, x dex bpl - dex - iny lda (zpword), y sta @size - $fe, x inx bmi - jsr $bf00 ; yes, ProDOS abstraction !byte $c8 !word @c8_parms jsr $bf00 !byte $ce !word @ce_parms jsr $bf00 !byte $ca !word @ca_parms jsr $bf00 !byte $cc !word @cc_parms dec $BF0E ; re-enable ROM mapping on return jmp SwitchToBank1 @c8_parms !byte 3 @filename !word $DFDF ; SMC !byte 0 @ce_parms !byte $d0 !byte 1 @offset !byte 0, 0, 0 ; SMC !byte $ff @ca_parms !byte $ff @cc_parms !byte 1 @address !word $DFDF ; SMC @size !word $DFDF ; SMC !word $ffff