add Out Of This World, fix crash in GR action slideshows, fix missing games in DHGR action slideshows, more game ordering fixes

This commit is contained in:
4am
2019-09-08 14:50:50 -04:00
parent ac7584edd8
commit 3ca889a18c
12 changed files with 76 additions and 36 deletions

BIN
res/action.gr/OOTW Normal file

Binary file not shown.

View File

@@ -1 +1 @@
#
#

View File

@@ -1 +1 @@
#
#

1
res/attract/OOTW Normal file
View File

@@ -0,0 +1 @@
#

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
#
#

1
res/title.hgr/OOTW Normal file

File diff suppressed because one or more lines are too long

View File

@@ -20,21 +20,25 @@
GetGameDisplayName
; in: A/Y points to game filename
; X = #$60 if we should only look in gGamesListStore for a match
; X = #$EA if we should also look in gSlideshowStore
; out: C clear if game exists in gGamesListStore, and
; A/Y points to game display name (but see hack notes below)
; C set if game does not exist (this can happen because slideshows
; list games that require a joystick, but the games list parser
; filters out joystick-only games if the machine doesn't have a
; joystick)
stx @maybeExit
+STAY @key
+STAY @slideshowKey
jsr okvs_get
!word gGamesListStore
@key !word $FDFD ; SMC
bcc @exit
; Hack to allow self-running demos that don't correspond to a game
; filename. If the name ends in a '.', accept it unconditionally.
; The filename is its own display name. Launching this fake game
; will of course fail, so don't do that.
; Hack to allow self-running demos that don't correspond to a game
; filename. If the name ends in a '.', accept it unconditionally.
; The filename is its own display name. Launching this fake game
; will of course fail, so don't do that.
+LDAY @key
+STAY PARAM
ldy #0
@@ -44,6 +48,23 @@ GetGameDisplayName
cmp #"."
beq @forceGoodResult
sec
@maybeExit
!byte $00 ; SMC
; if the key is still not found, AND the caller said to try this, then try
; getting the value of the current record from gSlideshowStore
; (some games have multiple action screenshots, in which case the filename of
; the action screenshot is not the game name, but the value is)
jsr okvs_get
!word gSlideshowStore
@slideshowKey
!word $FDFD ; SMC
+STAY @key3
jsr okvs_get
!word gGamesListStore
@key3 !word $FDFD ; SMC
; note that the game might still not be found (C will be set by okvs_get),
; which can happen if the game can't be played due to memory or joystick
; requirements
rts
@forceGoodResult
+LDAY @key

View File

@@ -134,9 +134,16 @@ kDFXConfFile
+
stx gCurrentlyVisibleSlideshowIndex
; try to get the human-readable name of this game from gGamesListStore
+LDAY SAVE
ldx #$60
jsr GetGameDisplayName
bcs @exit ; not found, so just skip this title
; if game is not found (C will be set here), it means it can't be played on
; this machine due to memory or joystick requirements, so we don't display
; it in slideshows
bcs @exit
; (we don't actually use the display name in the title slideshow, we just
; reuse the function for convenience)
; load DHGR screenshot at $4000/main and $4000/aux
+LDADDR kDHGRTitleDirectory
@@ -164,13 +171,22 @@ kDFXConfFile
lda KBD
bpl +
@actionExit
rts
+
stx gCurrentlyVisibleSlideshowIndex
; try to get the human-readable name of this game from gGamesListStore
; or gSlideshowStore
+LDAY SAVE
ldx #$EA
jsr GetGameDisplayName
bcs @exit ; not found, so just skip this title
; if game is not found (C will be set here), it means it can't be played on
; this machine due to memory or joystick requirements, so we don't display
; it in slideshows
bcs @actionExit
; (we don't actually use the display name in the DHGR action slideshow, we
; just reuse the function for convenience)
; load DHGR screenshot at $4000/main and $4000/aux
+LDADDR kDHGRActionDirectory

View File

@@ -90,14 +90,22 @@ kGRFizzleFile
+
stx gCurrentlyVisibleSlideshowIndex
; try to get the human-readable name of this game from gGamesListStore
; or gSlideshowStore
+LDAY SAVE
ldx #$EA
jsr GetGameDisplayName
bcs @actionExit ; not found, so just skip this title
; if game is not found (C will be set here), it means it can't be played on
; this machine due to memory or joystick requirements, so we don't display
; it in slideshows
bcs @actionExit
; (we don't actually use the display name in the GR action slideshow, we
; just reuse the function for convenience)
; load GR screenshot at $6000
+LOAD_FILE kGRActionDirectory, SAVE
+LDADDR $6000
+LDADDR $6400
jmp ExecuteTransitionAndWait
}

View File

@@ -52,12 +52,16 @@ HGRSingle
+
stx gCurrentlyVisibleSlideshowIndex
; check if game exists in the catalog (it might not if it requires a
; joystick and the machine doesn't have one, or if it requires 128K
; but the machine only has 64K)
; try to get the human-readable name of this game from gGamesListStore
+LDAY SAVE
ldx #$60
jsr GetGameDisplayName
bcs @exit ; not found, so just skip this title
; if game is not found (C will be set here), it means it can't be played on
; this machine due to memory or joystick requirements, so we don't display
; it in slideshows
bcs @exit
; (we don't actually use the display name in the title slideshow, we just
; reuse the function for convenience)
; load HGR screenshot at $4000
+LOAD_FILE kHGRTitleDirectory, SAVE
@@ -79,7 +83,6 @@ HGRSingle
;------------------------------------------------------------------------------
.HGRActionCallback
+STAY SAVE
+STAY @slideshowKey
lda KBD
bpl +
@@ -92,28 +95,17 @@ HGRSingle
+LOAD_FILE kHGRActionDirectory, SAVE
; try to get the human-readable name of this game from gGamesListStore
; and display it in the bottom-left corner
; or gSlideshowStore
+LDAY SAVE
ldx #$EA
jsr GetGameDisplayName
bcc @foundname
; if the key is not found, try getting the value of the current record from
; gSlideshowStore and using that instead
; (some games have multiple action screenshots, in which case the filename of
; the action screenshot is not the game name, but the value is)
jsr okvs_get
!word gSlideshowStore
@slideshowKey
!word $FDFD ; SMC
+STAY @key3
jsr okvs_get
!word gGamesListStore
@key3 !word $FDFD ; SMC
bcs @actionExit ; game still not found, bail
; (could happen if game can't be played
; due to memory or joystick requirements)
@foundname
; if game name is not found (C will be set here), it means the game
; can't be played due to memory or joystick requirements, so we hide
; it from slideshows
bcs @actionExit
; found the game, display its name in the bottom-left corner
+STAY SAVE
@drawname
ldx #0
stx HTAB
ldx #22

View File

@@ -180,6 +180,7 @@ RunAttractModule
; language card or auxiliary memory.
+LDAY @key
ldx #$60
jsr GetGameDisplayName
bcc + ; if game doesn't exist, skip the demo
rts