Jump to content
IGNORED

Dragon's Cache - Vs. Puzzle Drop Game - Now Available for Purchase!!!


Revontuli

Recommended Posts

5 hours ago, ongikong said:

... just burned the latest bin-file to an EPROM in order to testplay it on my PAL machine.

Didn't notice the "descent" in the filename and was surprised to see an adventure game on my TV... ?

@Revontuli Did you post the wrong file in this thread? Or is it the correct file in the wrong thread? 

Sorry, everyone!  That's what I get for updating two games at once.  Here's the latest of Dragon's Cache (also updated in the earlier posts):

 

DragonsCache_2_25_2020.bas.a78

DragonsCache_2_25_2020.bas.bin

  • Like 2
Link to comment
Share on other sites

I'm still working on a new build - no big changes in terms of the gameplay, but I'm messing around a bit with the title screen/"attract mode." 

 

I'm split on whether I should include the highscore support, as useful as it is.  Frankly, I've too many modes for the save systems to get everything.  The current plan is to just store the "score" for 4, 5, and 6 gems in single player mode, although even that would be a little awkward as I'd likely need to synch it with the switches.

 

In the short term, my bigger problem is that my code for the hssupport just isn't working right now.  Simply calling hssupport (without even invoking it by, say, calling drawhiscore) causes the game crash/black screen on startup.  I think included the font in the proper format in the first graphic block, there might be something in how I'm ordering resolution settings and managing the double buffer.  It's still odd that it basically crashes on load, though...

 

  set romsize 48k

  inline hiscore.asm

  set tv ntsc

  set hssupport $1248
  set trackersupport basic
  
  rem I still have the old texts from "Dragon's Descent"
  set hsseconds 4
  set hsscoresize 6
  set hscolorbase $FE
  set hsdifficultytext 'seven levels' 'random' 'infinite' 'randomly infinite'
  set hsgameranks  075000 'elder wyrm' 072000 'great wyrm' 071000 'wyrm' 070500 'lost wyrm' 070000 'hatchling' 5000 'elder wyrm' 2000 'great wyrm' 1000 'wyrm' 500 'lost wyrm' 0 'hatchling'

 rem ...later on, after dim variables, I include graphics...

  incgraphic gfx/hiscorefont.png 320A
  
  newblock 
  
  incgraphic gfx/PaletteSpriteP.png 160B 0 1 2 3 12 5 6 7 13 9 10 11 
  incgraphic gfx/Gems4.png 160B 0 1 2 3 5 6 7 9 10 11 13 14 15
  incgraphic gfx/alphabet_8_wide.png 160A 0 3 1 2
  incgraphic gfx/scoredigits_8_wide.png 160A 0 1 2 3 
  
  rem etc...

 

If there's anything obvious to try, help/advice would be appreciated.  Strangely, for a while it kinda worked on MAME but not on Prosystem, now it doesn't work on either. 

 

I don't have a good way to *really* test the save feature regardless, lacking the hardware (emulators are obviously very limited in this capacity), but I also don't want to tie up a lot anyone else's time unless I have a good plan forward.  The hssupport is a great fit (both technically and design-wise) in Dragon's Descent, but I'd still have things to figure out on the tech *and* design end for this game.

 

I don't want to invite *too* much feature creep, but are there any little features/"quality of life" stuff people might still want for Dragon's Cache?  Something along the lines of the win/loss counter or music track selector that I recently added?  I'm as grumpy as anyone about the lack of a CPU opponent (see above posts for why I'm not including one), but is there anything else someone would want on a final cartridge?  I'll warn folks I'm not making any promises :)  but I'm working on a few other projects, so it would be nice to get this one to a "completed" state...

 

Edited by Revontuli
  • Like 1
Link to comment
Share on other sites

The "inline hiscore.asm" is directly in your code path, and none of the modules are designed to be executed like that.

 

Normally you shouldn't need to inline any modules, unless you're running out of room in the 7800basic reserved area. If you do need to do inline for that reason, move the inline statements out of the code flow.

 

Looks like I could use another manual update. :ponder: :) 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

46 minutes ago, RevEng said:

The "inline hiscore.asm" is directly in your code path, and none of the modules are designed to be executed like that.

 

Normally you shouldn't need to inline any modules, unless you're running out of room in the 7800basic reserved area. If you do need to do inline for that reason, move the inline statements out of the code flow.

 

Looks like I could use another manual update. :ponder: :) 

That did it!  I figured it was something like that.  Now I just need to get all the graphic modes switched around properly so they render right :)  *Then* I need to figure out what modes to save, and the best way to switch them around.

 

Thanks a ton!

 

  • Like 1
Link to comment
Share on other sites

OK - in the immortal words of Space Ghost "Don't panic, this happened once before, I just can't remember what I did to make it better..."  

 

The hiscore font is rendering as if it's half-width (or maybe double-byted, if that makes sense):

 

HiScoreFontBug.png.b1315c971fe046393a0cfcebb6ce44b2.png

 

I remember this being an issue, but cannot remember the sequence of settings to fix it (and can't find the specific topic that covers this).  I'm wondering if using mode 160B and/or double buffering makes any difference - I turn double buffering off before rendering hiscore attract and turn it back on after.

 

I *did* set doublewide on before setting the displaymode (which was in a recent topic that looks like this), which was the first thing I thought of.  I'll keep working through it, but this is likely another obvious oversight.

Edited by Revontuli
Link to comment
Share on other sites

1 hour ago, Revontuli said:

I don't want to invite *too* much feature creep, but are there any little features/"quality of life" stuff people might still want for Dragon's Cache?  Something along the lines of the win/loss counter or music track selector that I recently added?  I'm as grumpy as anyone about the lack of a CPU opponent (see above posts for why I'm not including one), but is there anything else someone would want on a final cartridge?  I'll warn folks I'm not making any promises :)  but I'm working on a few other projects, so it would be nice to get this one to a "completed" state...

 

The game is really well rounded with a lot of variety already.  The following could be nearly categorized as nitpicky rather then perhaps useful or needful suggestions:

 

1.  Dragons of red and blue variety are playable in the game.  A yellow dragon is used for selection.  Maybe a green ("Dragon of Earth") can be included to go with the red and blue options in-game.

 

2.  I think the music for Dragon's Descent is fantastic.  If possible, hoping for a little more variety here though.  Perhaps another tune or two can be either substituted or added to the game.  No 'biggie' though; the default "A" tune has definitely grown on me and is what I leave it set at currently when playing.

 

Please, do not fret over the above, as this game is rock-solid out the gate.  One of the reasons I even mentioned either point is because as far as gameplay and overall presentation, this title is aces - there is truly nothing more I can think of or desire from this puzzle title.  

 

All in 48K too!  What a testimony to your talent, abilities, and A7800basic...standing-o as far as I am concerned; wonderful job!

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

36 minutes ago, Trebor said:

1.  Dragons of red and blue variety are playable in the game.  A yellow dragon is used for selection.  Maybe a green ("Dragon of Earth") can be included to go with the red and blue options in-game.

Remember that easter eggs are a thing :)

 

36 minutes ago, Trebor said:

2.  I think the music for Dragon's Descent is fantastic.  If possible, hoping for a little more variety here though.  Perhaps another tune or two can be either substituted or added to the game.  No 'biggie' though; the default "A" tune has definitely grown on me and is what I leave it set at currently when playing.

That ended up being today's project - I'm adding a "D" track, which is a slower tune to mix things up a bit.  I'll also likely go back to revise "A" a little bit.  They're folk tunes I transcribed "directly" (by TIA standards) from sheet music, and now I'm seeing if I can get them to sound a little more like the source material, or at least play a little more smoothly in places.

 

Thank you for your help and feedback - I've done (do) a lot of coding, and for some reason 7800Basic and the 7800 in general are in that sweet spot of simplicity and complexity that I can manage while I have my work stuff compile.  I'm amazed at what it can do, while being easy to manage (you know, compared to hundreds of C++ files compiling collision libraries and 3D shader effects, as much as I love all of those).  I'm having a lot of fun working with it, and I hope to have some more stuff out soon!

 

Edited by Revontuli
  • Like 1
Link to comment
Share on other sites

19 minutes ago, RevEng said:

Is the hiscore font imported at 320A? That's what the hiscore display routine uses, regardless of what the rest of the game does. Also make sure it's the first graphic in the block.

I'm pretty sure, even though that's the obvious suspect.  Here's how I'm defining the graphics:

 

  rem graphic files

  incgraphic gfx/hiscorefont.png 320A
  newblock 
  
  incgraphic gfx/PaletteSpriteP.png 160B 0 1 2 3 12 5 6 7 13 9 10 11 
  incgraphic gfx/Gems4.png 160B 0 1 2 3 5 6 7 9 10 11 13 14 15
  incgraphic gfx/alphabet_8_wide.png 160A 0 3 1 2
  incgraphic gfx/scoredigits_8_wide.png 160A 0 1 2 3

  rem etc...

 

Is there a good protocol for setting graphics modes, double buffering, etc. when dealing with "drawhiscores attract"?  This is roughly how I'm doing it:

 

  
__HandleHiScore

  doublebuffer off
  clearscreen
  gamedifficulty  = 0
  drawhiscores attract
  drawscreen

  doublebuffer on
  clearscreen
  savescreen
  _TitleScreenSwapTimer = 0

 goto __StartMainTitleScreen

 

Edited by Revontuli
Link to comment
Share on other sites

11 minutes ago, RevEng said:

For a work-around, add "characterset hiscorefont" some time before the drawhiscores statement.

 

It looks like I need to add a small bit of extra assembly to switch the charactermode from the alternate mode to the primary mode.

That fixed it!  Back to work on incorporating it into the rest of the game...

 

As I mentioned above, my current plan is to separate out the score modes by number of gems, 4-6 => Easy=>Hard.  I think this should also work for 2-Player score attacks without too much trouble, but I'll find out :) 

Link to comment
Share on other sites

OK!  First pass on High Score support, plus another music track (from an old Irish tune...) 

 

DragonsCache_3_03b_2020.bas.a78

DragonsCache_3_03b_2020.bas.bin

 

Keep in mind that unless you have hardware to save your scores, they will reset if you change the number of Gems (i.e. difficulty), as the system only holds one leaderboard at a time.  

 

Single player and 2-player score modes can qualify for the leaderboard.  The 2-Player head-to-head score mode ends when one player scores more than the other (when the other has a game over), so it's not the best way to get a "personal best."  

 

[EDIT:] This build seems to run fine on MAME A7800 (my usual emulator), but not on ProSystem.  BupSystem can run the game but hangs when the high score screen shows up.  As always, I'm curious (and appreciative) to see how it might perform on a physical 7800...

Edited by Revontuli
  • Like 1
Link to comment
Share on other sites

8 hours ago, Revontuli said:

[EDIT:] This build seems to run fine on MAME A7800 (my usual emulator), but not on ProSystem.  BupSystem can run the game but hangs when the high score screen shows up.  As always, I'm curious (and appreciative) to see how it might perform on a physical 7800...

For some peace of mind, a very quick and dirty video below; volume was hardly audible for the first 30 seconds (sorry), increased the volume slightly for the last 30 seconds. 

More importantly, as it does with the A7800 emulator, under real hardware, the 20200303b build runs fine:

 

 

 

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Yes! I burned the game on an EPROM and tested it on my PAL machine a few minutes ago. It runs fine on that as well.

Finally a friend will come over tonight and we will test the game for a longer period on real hardware in 2-player-mode! ?

Will post a short report here tomorrow! ?

  • Thanks 1
Link to comment
Share on other sites

New build!  This fixes it so the High Scoreboard only shows up in scoring mode - it didn't really make sense when it showed up in the Race/Battle modes:

 

DragonsCache_3_05_2020.bas.a78

DragonsCache_3_05_2020.bas.bin

 

14 hours ago, ongikong said:

Yes! I burned the game on an EPROM and tested it on my PAL machine a few minutes ago. It runs fine on that as well.

Finally a friend will come over tonight and we will test the game for a longer period on real hardware in 2-player-mode! ?

Will post a short report here tomorrow! ?

Awesome, I'm looking forward to it!  I haven't tested the 2-player modes much, so I'm bracing for bugs and quirks :)

 

18 hours ago, Trebor said:

More importantly, as it does with the A7800 emulator, under real hardware, the 20200303b build runs fine

Awesome-It's great to see it playing on a physical system!

Edited by Revontuli
  • Like 1
Link to comment
Share on other sites

A repost/update of the Battle rules for anyone trying 2-Player (I've also posted these rules to the original post):

 

For Battle Mode, when you match 3+ gems they don't disappear, but change to an attack block that helps fill a meter you see in place of the score.  Press both buttons on your joystick at the same time to "activate" these blocks, using (and removing) them.  You can use these attack blocks at any time, and they'll remove the other player's current falling gems.  If your power meter is totally full, a layer of indestructible blocks are added at the bottom of the other player's pit.  Attacking will use up your meter, but if you "combo" into a new set of attack blocks after the old ones disappear, the meter is preserved, so some planning/strategy is involved, and trying to fill a meter without relying on combos is tricky (and risky).  

 

In single player, you can play a "Practice" mode with these rules, mainly to learn this new dynamic.  You only score a point when you "attack" with a full meter.

Edited by Revontuli
Link to comment
Share on other sites

OK, I played the game with a friend last night and first of all I have to admit: we had a lot of fun! 

Unfortunately we didn't really got into the battle mode for lack of exact rules/controls (didn't test to press both buttons simultaneously)... But now that I read the rules here in the previous post it's all clear and we'll have to challenge each other again. I think you made a nice alternation in this mode, @Revontuli ?

 

Here are some little things that came to our attention while playing:

- Player 2 can't sign in the scoreboard. Player 1 is only able to choose the letters for player 2 but he can't confirm a letter. This confirmation is only possible with the controller of player 2.

- We played the second last build so there was only one scoreboard for all game modes. It's good that you revised it because it really makes sense in the score mode only.

- Maybe you can rethink the used font. On my CRT it was pretty hard to read some words... (e.g. The "R" and "B" look pretty similar, so I first read "RACE, RATTLE, RACK" in the menu)  The letters get darker on top and bottom - maybe it might be better to have a higher contrast on the edges...

- The speed increases every 1000 points, correct? In 2-player-score-mode we felt that nothing really happened for a long time... Maybe it's better to increase speed earlier? What do other testplayers think?

- Do the gems always drop in a random row? I was wondering that the game is still running although I reached the top at one spot (the gems kept on falling down 2 rows further)...

 

Let me know if I can help and test some more. I had no crashes etc. on my PAL machine and the game ran pretty flawlessly.

I think you are pretty close to finishing this awesome project! Keep up the good work! ?

 

 

 

 

20200305_160111_resized.jpg

20200305_160213_resized.jpg

20200305_161614_resized.jpg

20200305_160648_resized.jpg

Edited by ongikong
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

42 minutes ago, ongikong said:

Here are some little things that came to our attention while playing:

- Player 2 can't sign in the scoreboard. Player 1 is only able to choose the letters for player 2 but he can't confirm a letter. This confirmation is only possible with the controller of player 2.

 

This one looks to be a 7800basic hiscore issue, specifically with two players. @Revontuli I'm looking into it. [edit - the fix is in Revontuli's inbox, and at the github master]

  • Thanks 1
Link to comment
Share on other sites

New build with some ongoing fixes:

 

DragonsCache_3_06_2020.bas.a78

DragonsCache_3_06_2020.bas.bin

 

-Incorporated RevEng's fixes, hopefully correctly :)

-I brightened the font colors a bit - see if that helps on a CRT.

-Leveling/Speedup was only working on single player score mode.  I added it to the 2-Player score mode in this build.  For reference, leveling up is based on how many *gems* you've taken, around 75 gems per level (if I remember right), not your score (which adds some strategy and further incentive to go for chaining).  I don't think I'll add the leveling/speedup system to the Racing or Battle modes - they have their own challenges as it is.

-An instructions screen for the Battle Mode shows if when you select it - it's short, terse, and a little mysterious but better than nothing.  It should appear every time you select the mode from the title screen, but not bother you when you choose a retry/rematch.  

 

BattleInstructions.png.27424aba268d5305e8a259ce674f0864.png

Hey, "AVOID MISSING BALL FOR HIGH SCORE" was good enough for pong :)

Edited by Revontuli
  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...