diff --git a/Makefile b/Makefile index 2cc1ac69b..d213f40ca 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,8 @@ dsk: md asm $(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/SS" "build/SS" >>build/log rsync -aP res/demo/* build/DEMO >>build/log $(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/DEMO" "build/DEMO" >>build/log + rsync -aP res/title.animated/* build/TITLE.ANIMATED >>build/log + $(CADIUS) ADDFOLDER build/"$(DISK)" "/$(VOLUME)/TITLE.ANIMATED" "build/TITLE.ANIMATED" >>build/log $(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.11" "SPCARTOON.1." >>build/log $(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.22" "SPCARTOON.2." >>build/log $(CADIUS) RENAMEFILE build/"$(DISK)" "/$(VOLUME)/DEMO/SPCARTOON.33" "SPCARTOON.3." >>build/log @@ -113,6 +115,7 @@ md: mkdir -p build/ACTION.DHGR mkdir -p build/ACTION.GR mkdir -p build/ARTWORK.SHR + mkdir -p build/TITLE.ANIMATED mkdir -p build/ATTRACT mkdir -p build/SS mkdir -p build/DEMO diff --git a/res/attic/transfer.dsk b/res/attic/transfer.dsk index 00a333b0f..ef3b77f55 100644 Binary files a/res/attic/transfer.dsk and b/res/attic/transfer.dsk differ diff --git a/res/title.animated/_FileInformation.txt b/res/title.animated/_FileInformation.txt new file mode 100644 index 000000000..92c7b8a84 --- /dev/null +++ b/res/title.animated/_FileInformation.txt @@ -0,0 +1,2 @@ +SPARE.CHANGE=Type(06),AuxType(0300),Access(C3) +SPARE.CHANGE.1=Type(F1),AuxType(0000),Access(C3) diff --git a/res/title.animated/spare.change#060300 b/res/title.animated/spare.change#060300 new file mode 100755 index 000000000..5273e97e5 Binary files /dev/null and b/res/title.animated/spare.change#060300 differ diff --git a/res/title.animated/spare.change.1 b/res/title.animated/spare.change.1 new file mode 100755 index 000000000..f7491b442 Binary files /dev/null and b/res/title.animated/spare.change.1 differ diff --git a/res/title.hgr/BUCK.ROGERS b/res/title.hgr/BUCK.ROGERS index 45c094271..8ec69d353 100644 Binary files a/res/title.hgr/BUCK.ROGERS and b/res/title.hgr/BUCK.ROGERS differ diff --git a/res/title.hgr/NIGHT.STALKER b/res/title.hgr/NIGHT.STALKER index 75faec24e..f593452bc 100644 Binary files a/res/title.hgr/NIGHT.STALKER and b/res/title.hgr/NIGHT.STALKER differ diff --git a/res/title.hgr/PITSTOP.II b/res/title.hgr/PITSTOP.II index 6f9390944..5d4ed7f79 100644 Binary files a/res/title.hgr/PITSTOP.II and b/res/title.hgr/PITSTOP.II differ diff --git a/res/title.hgr/QUADRANT.6112 b/res/title.hgr/QUADRANT.6112 index 8b14a3b20..e0e2550f3 100644 Binary files a/res/title.hgr/QUADRANT.6112 and b/res/title.hgr/QUADRANT.6112 differ diff --git a/res/title.hgr/SERPENTINE b/res/title.hgr/SERPENTINE index dd01ceb7b..470ce99dd 100644 Binary files a/res/title.hgr/SERPENTINE and b/res/title.hgr/SERPENTINE differ diff --git a/res/title.hgr/SPARE.CHANGE b/res/title.hgr/SPARE.CHANGE index dbb608d82..10db29036 100644 Binary files a/res/title.hgr/SPARE.CHANGE and b/res/title.hgr/SPARE.CHANGE differ diff --git a/res/title.hgr/WARP.DESTROYER b/res/title.hgr/WARP.DESTROYER index 79a6a6de2..f9978edd4 100644 Binary files a/res/title.hgr/WARP.DESTROYER and b/res/title.hgr/WARP.DESTROYER differ diff --git a/src/4cade.a b/src/4cade.a index 08d6bc1f1..48aa29a6f 100644 --- a/src/4cade.a +++ b/src/4cade.a @@ -82,8 +82,10 @@ ResetVector ; 6 bytes, copied to $100 ; these routines will only be called after relocating to language card !source "src/ui.search.mode.a" !source "src/ui.browse.mode.a" + !source "src/prodos.path.a" !source "src/ui.overlay.a" !source "src/ui.offscreen.a" + !source "src/ui.animation.a" !source "src/ui.credits.a" !source "src/ui.attract.mode.a" !source "src/ui.attract.hgr.a" @@ -91,7 +93,6 @@ ResetVector ; 6 bytes, copied to $100 !source "src/ui.attract.shr.a" !source "src/ui.attract.gr.a" !source "src/ui.cheats.a" - !source "src/prodos.path.a" !source "src/glue.launch.a" !source "src/glue.prorwts2.a" !source "src/okvs.a" diff --git a/src/prodos.path.a b/src/prodos.path.a index 719de80dd..805f3f251 100644 --- a/src/prodos.path.a +++ b/src/prodos.path.a @@ -16,6 +16,10 @@ kDHGRTitleDirectory !byte 11 !raw "TITLE.DHGR/" +kAnimatedTitleDirectory + !byte 15 + !raw "TITLE.ANIMATED/" + kHGRActionDirectory !byte 11 !raw "ACTION.HGR/" @@ -141,6 +145,6 @@ AddToPath @done rts -!if >kTitleFile != >kCoverFile { - !error ">kTitleFile != >kCoverFile, uncomment LoadTitleOffscreen block in ui.offscreen and disable this check" -} +;!if >kTitleFile != >kCoverFile { +; !error ">kTitleFile != >kCoverFile, uncomment LoadTitleOffscreen block in ui.offscreen and disable this check" +;} diff --git a/src/ui.animation.a b/src/ui.animation.a new file mode 100644 index 000000000..a2b0964dd --- /dev/null +++ b/src/ui.animation.a @@ -0,0 +1,73 @@ +;License:MIT +;(c) 2018-9 by 4am +; +; functions for animated title screens +; +; - MaybeAnimateTitle +; + +MaybeAnimateTitle + lda OffscreenPage + bne + + lda #$5F + +HIDE_NEXT_2_BYTES ++ lda #$3F + sta SAVE+1 + lda #$FD + sta SAVE + ldy #0 + lda (SAVE),y ; see if there is a hidden JMP to an + cmp #$4C ; animation routine for this screen + beq + + rts ++ + ldx #$20 ; copy new HGR screen to the other + ldy #$40 + lda OffscreenPage + beq + + stx @a+2 + sty @b+2 + jmp ++ ++ sty @a+2 + stx @b+2 +++ ldx #$20 + ldy #0 +@a lda $FD00,y ; SMC +@b sta $FD00,y ; SMC + iny + bne @a + inc @a+2 + inc @b+2 + dex + bne @a + + +LDADDR gGamesListStore ; if so, load the animation routine + ldx gGameToLaunch ; which is stored in a subdirectory + jsr okvs_nth ; and keyed off the current game's + +STAY @fname ; filename + jsr LoadFile + !word kAnimatedTitleDirectory +@fname !word $FDFD + !word 0 + + ldy kAnimatedTitleDirectory + sty ProDOS_prefix ; temporarily set 'root' directory to +- lda kAnimatedTitleDirectory,y;/title.animated/ so animation file + sta ProDOS_prefix, y ; can load other files in the same subdirectory + dey + bne - + + ldx #5 ; copy prelaunch code +- lda @titleAnimPrelaunch,x + sta $106,x + dex + bpl - + + jsr Launch + jsr ResyncPage + clc ; tell caller not to refresh screen + rts + +@titleAnimPrelaunch + bit $C082 + jmp (SAVE) diff --git a/src/ui.browse.mode.a b/src/ui.browse.mode.a index 13b289428..564cc82af 100644 --- a/src/ui.browse.mode.a +++ b/src/ui.browse.mode.a @@ -111,7 +111,8 @@ ForceBrowseChanged OnBrowseChanged ; in: X = game index jsr LoadGameTitleOffscreen - jmp DrawUIWithoutDots + jsr DrawUIWithoutDots + jmp MaybeAnimateTitle ;------------------------------------------------------------------------------ diff --git a/src/ui.offscreen.a b/src/ui.offscreen.a index 2ee6dfa84..77440fa77 100644 --- a/src/ui.offscreen.a +++ b/src/ui.offscreen.a @@ -8,6 +8,7 @@ ; - LoadCoverOffscreen ; - LoadHelpOffscreen ; - LoadGameTitleOffscreen +; - ResyncPage ; - ShowOtherPage ; - ToggleOffscreenPage ; - ClearOffscreen @@ -47,15 +48,15 @@ GetOffscreenAddress ; out: all flags and registers clobbered ;------------------------------------------------------------------------------ LoadTitleOffscreen -;;!if >kTitleFile = >kCoverFile { +!if >kTitleFile = >kCoverFile { lda #