Jump to content
IGNORED

The Legend of Beryl Reichardt


Opry99er

Recommended Posts

Not much new to see except the new navigable tile, the grass, and a SLIGHT re-design of the map. MAJOR redesign will be on the immediate horizon... Like, in the next day or two. :) More has happened behind the scenes than this video shows.

 

 

 

http://www.youtube.com/watch?v=oXjKWS4CxL0&feature=youtu.be

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

Alright, to keep code size down and to maintain structure, the following is getting stripped from the ITEM menu and placed later in the code. Essentially this little chunk plugs individual party member's stats into a temporary variable, prefixed "A". This cut my code size for the item menu literally in half or better.

 

The labels will be changed to "ActiveBeryl", "ActveMarkus" etc. instead of ItemBeryl...

 

The reason for this is that I will need this same routine for the SPELLS menu and I will need MORE variables plugged in to the "A" temporary variable set.

 

ItemBeryl:
     REM BERYL
     AMHP=BMHP :: AHP=BHP :: AMMP=BMMP :: AMP=BMP :: ACN$="BERYL" :: ANSP=12 :: ANL=5
     GOSUB ItemMenu2
     BHP=AHP :: BMP=AMP :: RETURN
 
ItemRepto:
     REM REPTO 
     AMHP=RMHP :: AHP=RHP :: AMMP=RMMP :: AMP=RMP :: ACN$="REPTOSLICER" :: ANSP=9 :: ANL=11
     GOSUB ItemMenu2
     RHP=AHP :: RMP=AMP :: RETURN
 
ItemMarkus:
     REM MARKUS
     AMHP=MMHP :: AHP=MHP :: AMMP=MMMP :: AMP=MMP :: ACN$="MARKUS" :: ANSP=12 :: ANL=6
     GOSUB ItemMenu2
     MHP=AHP :: MMP=AMP :: RETURN
 
ItemSkylar:
     REM SKYLAR
     AMHP=SMHP :: AHP=SHP :: AMMP=SMMP :: AMP=SMP :: ACN$="SKYLAR" :: ANSP=12 :: ANL=6
     GOSUB ItemMenu2
     SHP=AHP:: SMP=AMP :: RETURN
The SPELLS menu functionality is quite a but more incolved than ITEM because I am having to manipulate variables of multiple characters at once, as opposed to just one, plus inventory decreases when an item is used. You can see the complexity in the post 3 or 4 above this one, including all the brand new variables I will have to carry just to accomplish this seemingly simple set of commands.

 

Need to get creative here... Code size is getting heavy and (while Im not near the max yet) I can see how just adding the few small things for my Main Menu is chewing through bytes.

Edited by Opry99er
Link to comment
Share on other sites

THIS.......TOOK.......FOREVER...................

 

 

Here's what I did. As I stated above, I moved PART of the code out of the Item Menu and made it's own label, allowing me to utilize it in the SPELLS menu. Anytime the code references "ActiveBeryl" or any other character, it is storing the member's data into a temporary variable set called "A".

 

 

AHP is, in this case, the Health Point value of the current character selected by the game user. Once the A variable set is loaded with that particular party member's data, it can then be manipulated, changed, whatever, without affecting the ACTUAL party member's data... It is a temporary variable set. Once the A set is changed, it is re-loaded back into the static variables associated with the party member.

 

It was important to do this for a couple of reasons, but mainly because the SPELLS functionality is extremely complex compared to anything else I've done so far. I needed to be able to track who was "Casting" the spell, who was "Receiving" the spell, the Magic Points of the Caster, the Health Points of the Receiver, Maximum Health Points of the Receiver, the Status of the Receiver, and THEN I needed to be able to manipulate all that based on which spell was cast (all three members who can cast spells have a different NUMBER of spells they can cast) and THEN plug all that information back into the static member variables before returning to the Main Menu and the main gameplay.

 

Whew!!! Get all that?

 

Okay, to do this I created two ADDITIONAL temporary variable sets, the "C" set and the "RP" set... For "C"aster and "R"eceiving "Player". Once this was done, I had simply to load the static variable set into the A set, where it could then be plugged into the C set and the RP set when needed, then at the end of it all, the C and RP sets get plugged BACK into the static set.

 

The one thing I have left to do is return all the temp values back into the static sets after manipulation... I'm too tired to finish tonight. I told myself to be finished with this by 2:00AM and then go to bed, and now it's 4:11AM

 

 

 

Anyway, here's the TIdBiT code. It's not been tested yet, because I'm too tired to debug and I don't want something nagging at me while I'm trying to sleep.

 

 

 

 

 

          //BEGIN Spells Menu//
 
 
//SpellsMenu... this is a BIG one....  Need to have the ability to select WHO WILL CAST the magic
//WHO WILL RECEIVE the magic, then display HP and MHP of receiver, MP and MMP of caster
//then animate the spell, display stat changes on both, then return to top of SpellsMenu.
 
***************NEED TO DEBUG ALL THE "R" set VARIABLES--- CURRENTLY CROSS CONTAMINATING REPTOSLICER'S STATIC VALUES
 
          
 
 
SpellsMenu:
 
     REM SPELLS MENU
     GOSUB ClearMenu
     DISPLAY AT(1,12):"SPELLS";:: DISPLAY AT(2,12):"^^^^^^" :: GOSUB ReturnString
     DISPLAY AT(8,1):"WHO WILL CAST?";:"1) BERYL";:"2) REPTOSLICER";:"3) MARKUS";:"4) SKYLAR";
 
 
 
MidSpells-Keyscan:
 
     GOSUB Keyscan
     IF K=13 THEN GOTO MainMenu-MiddleReturn 
     IF K>52 THEN GOTO MidSpells-Keyscan ELSE IF K<49 THEN GOTO MidSpells-Keyscan
     ON K-48 GOSUB CastBeryl,CastRepto,CastMarkus,CastSkylar
     RETURN
 
CastBeryl:
 
     GOSUB ActiveBeryl
     GOSUB SpellsMenu2
//wrong//
     BHP=AHP :: BMP=AMP :: RETURN
 
CastRepto:
 
     GOSUB ActiveRepto
     GOSUB SpellsMenu2
//wrong//
     RHP=AHP :: RMP=AMP :: RETURN
 
CastMarkus:
 
     GOSUB ActiveMarkus
     GOSUB SpellsMenu2
//wrong//
     MHP=AHP :: MMP=AMP :: RETURN
 
CastSkylar:
 
     GOSUB ActiveSkylar
     GOSUB SpellsMenu2
//wrong//
     SHP=AHP:: SMP=AMP :: RETURN
 
 
 
 
SpellsMenu2:
 
          //this part loads the "C" temporary variable set (caster) with the info from the "A" temporary variable set (active)
 
     CMMP=AMMP :: CMP=AMP :: CHP=AHP :: CMHP=AHP :: CP$=ACN$ :: CNSP=ANSP :: CNL=ANL ::CMN=AMN
 
 
          //Display Caster's info at the top of the screen//
     GOSUB ClearMenu :: DISPLAY AT(1,CNSP):CP$;:: CALL HCHAR(2,CNSP+2,94,CNL)
     DISPLAY AT(3,1):"HP:";CHP;"/";CMHP;:: DISPLAY AT(3,16):"MP:";CMP;"/";CMMP;
     GOSUB ReturnString
     IF CMN=0 THEN DISPLAY AT(17,1):"THIS MEMBER CANNOT CAST" :: GOSUB Keyscan :: GOTO SpellsMenu
 
     DISPLAY AT(8,1):"CAST ON WHICH PARTY MEMBER?";:"1) BERYL";:"2) REPTOSLICER";:"3) MARKUS";:"4) SKYLAR";
 
 
MidSpells-Keyscan2:
 
     GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu 
     IF K>52 THEN GOTO MidSpells-Keyscan2 ELSE IF K<49 THEN GOTO MidSpells-Keyscan2
     ON K-48 GOSUB ReceiveBeryl,ReceiveRepto,ReceiveMarkus,ReceiveSkylar
     RETURN
 
 
ReceiveBeryl:
 
     GOSUB ActiveBeryl
     GOSUB SpellsMenu3
     BHP=AHP :: BMP=RMP :: RETURN
 
ReceiveRepto:
 
     GOSUB ActiveRepto
     GOSUB SpellsMenu3
     RHP=AHP :: RMP=AMP :: RETURN
 
ReceiveMarkus:
 
     GOSUB ActiveMarkus
     GOSUB SpellsMenu3
     MHP=AHP :: MMP=AMP :: RETURN
 
ReceiveSkylar:
 
     GOSUB ActiveSkylar
     GOSUB SpellsMenu3
     SHP=AHP:: SMP=AMP :: RETURN
 
 
SpellsMenu3:
 
          //this part loads the "RP" temporary variable set (receiver) with the info from the "A" temporary variable set (active)
 
     RPMMP=AMMP :: RPMP=AMP :: RP$=ACN$ :: RPNSP=ANSP :: RPNL=ANL
     GOSUB ClearBox
          //Display Receiver's Name and stats INSIDE the box//
     DISPLAY AT(8,RNSP):RP$;:: CALL HCHAR(9,RPNSP+2,94,RPNL)
     DISPLAY AT(10,1):"HP:";RPHP;"/";RPMHP;:: DISPLAY AT(10,16):"MP:";RPMP;"/";RPMMP;
     DISPLAY AT(12,1):"CAST WHICH SPELL?"
     IF CMN=3 THEN GOSUB ReptoFinalCast
     IF CMN=2 THEN GOSUB SkylarFinalCast
     IF CMN=1 THEN GOSUB BerylFinalCast
     RETURN
 
 
 
ReptoFinalCast:
     DISPLAY AT(16,1):"1) HEAL";:"2) CURE";:"3) LIFE"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K>51 THEN GOTO ReptoFinalCast ELSE IF K<49 THEN GOTO ReptoFinalCast
     ON K-48 GOSUB HealSpell,CureSpell,LifeSpell
     RETURN
 
SkylarFinalCast:
     DISPLAY AT(16,1):"1) HEAL";:"2) CURE"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K>50 THEN GOTO SkylarFinalCast ELSE IF K<49 THEN GOTO SkylarFinalCast
     ON K-48 GOSUB HealSpell,CureSpell
     RETURN
 
 
 
 
BerylFinalCast:
     DISPLAY AT(16,1):"1) HEAL"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K=49 THEN GOSUB HealSpell ELSE GOTO BerylFinalCast
     RETURN
 
 
 
 
          //////////////////////////////////////////////////////////////////////
          //**Need to add status flag for "Healthy" "Poisoned" and "Fallen"   //
          //**As of now, Cure and Life do not do all that they WILL do once   //
          //**this is implemented fully.  Cure will heal "Poisoned" and change//
          //**status flag to "Healthy," Life will change status from "Fallen" //
          //**To "Healthy" and will allow "Heal" magic to raise HP.           //
          //////////////////////////////////////////////////////////////////////
 
 
HealSpell: 
     IF CMP<10 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: FOR I=1 TO 800 :: NEXT I :: RETURN
     IF RPHP<1 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"MEMBER IS FALLEN"; :: FOR I=1 TO 800 :: NEXT I :: RETURN
     CMP=CMP-10 :: RPHP=RPHP+10 :: IF RPHP>RPMHP THEN RPHP=RPMHP
     GOSUB SpellResult
     RETURN
 
          //This will also change the status flag to "Healthy" once that part is complete
CureSpell:
     IF CMP<15 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: FOR I=1 TO 800 :: NEXT I :: RETURN
     CMP=CMP-15
     GOSUB SpellResult
     RETURN
 
          //Still Need to add status flag for "Healthy" "Poisoned" and "Fallen"
LifeSpell:
     IF CMP<20 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: FOR I=1 TO 800 :: NEXT I :: RETURN
     IF RPHP<1 THEN RPHP=1 :: GOTO LifeSpellEnd
     RPHP=RPMHP
 
LifeSpellEnd:
 
     GOSUB SpellResult
     RETURN
 
 
 
SpellResult:
 
     CALL SCREEN(16)
     GOSUB ClearMenu
     DISPLAY AT(1,CNSP):CP$;:: CALL HCHAR(2,CNSP+2,94,CNL)
     DISPLAY AT(3,1):"HP:";CHP;"/";CMHP;:: DISPLAY AT(3,16):"MP:";CMP;"/";CMMP;
     DISPLAY AT(8,RNSP):RP$;:: CALL HCHAR(9,RNSP+2,94,RNL)
     DISPLAY AT(10,1):"HP:";RPHP;"/";RPMHP;:: DISPLAY AT(10,16):"MP:";RPMP;"/";RPMMP;
     CALL SOUND(50,330,1) :: CALL SOUND(50,494,1) :: CALL SOUND(100,1319,0,494,10,330,10)
     CALL SCREEN(2)
     FOR I= 1 TO 400 :: NEXT I
     RETURN
 
 
          //END Spells Menu//

 

 

Edited by Opry99er
Link to comment
Share on other sites

Both bugs have been repaired. Started a debugging session this morning and found a problem in HealSpell, CureSpell, and Lifespell. SYNTAX errors. Thanks to InsaneMultitasker for the help. Cant have FOR NEXT following IF THEN on a program line without disabling prescan. :)

 

Tonight, after work, will be my last big night of coding for a while. Family comes home from Indiana and I will have to be responsible again. :)

 

Tonight I hope to get fully debugged on SPELLS and fully implement STATUS (which will be a walk in the park by comparison)

Edited by Opry99er
  • Like 2
Link to comment
Share on other sites

After an hour and a half of debugging, here is the TIdBiT code, all debugged and working properly.

 

 

 

                    //BEGIN Spells Menu//
 
//SpellsMenu... this is a BIG one....  Need to have the ability to select WHO WILL CAST the magic
//WHO WILL RECEIVE the magic, then display HP and MHP of receiver, MP and MMP of caster
//then animate the spell, display stat changes on both, then return to top of SpellsMenu.
 
 
 
          
 
 
SpellsMenu:
 
     REM SPELLS MENU
     GOSUB ClearMenu
     DISPLAY AT(1,12):"SPELLS";:: DISPLAY AT(2,12):"^^^^^^" :: GOSUB ReturnString
     DISPLAY AT(8,1):"WHO WILL CAST?";:"1) BERYL";:"2) REPTOSLICER";:"3) MARKUS";:"4) SKYLAR";
 
 
 
MidSpells-Keyscan:
 
     GOSUB Keyscan
     IF K=13 THEN GOTO MainMenu-MiddleReturn 
     IF K>52 THEN GOTO MidSpells-Keyscan ELSE IF K<49 THEN GOTO MidSpells-Keyscan
     ON K-48 GOSUB CastBeryl,CastRepto,CastMarkus,CastSkylar
     GOTO SpellsMenu
 
CastBeryl:
 
     GOSUB ActiveBeryl
     GOSUB SpellsMenu2
     BHP=CHP :: BMP=CMP :: RETURN
 
CastRepto:
 
     GOSUB ActiveRepto
     GOSUB SpellsMenu2
     RHP=CHP :: RMP=CMP :: RETURN
 
CastMarkus:
 
     GOSUB ActiveMarkus
     GOSUB SpellsMenu2
     MHP=CHP :: MMP=CMP :: RETURN
 
CastSkylar:
 
     GOSUB ActiveSkylar
     GOSUB SpellsMenu2
     SHP=CHP:: SMP=CMP :: RETURN
 
 
 
 
SpellsMenu2:
 
          //this part loads the "C" temporary variable set (caster) with the info from the "A" temporary variable set (active)
 
     CMMP=AMMP :: CMP=AMP :: CHP=AHP :: CMHP=AMHP :: CP$=ACN$ :: CNSP=ANSP :: CNL=ANL ::CMN=AMN
 
 
          //Display Caster's info at the top of the screen//
     GOSUB ClearMenu :: DISPLAY AT(1,CNSP):CP$;:: CALL HCHAR(2,CNSP+2,94,CNL)
     DISPLAY AT(3,1):"HP:";CHP;"/";CMHP;:: DISPLAY AT(3,16):"MP:";CMP;"/";CMMP;
     GOSUB ReturnString
     IF CMN=0 THEN DISPLAY AT(17,1):"THIS MEMBER CANNOT CAST" :: GOSUB Keyscan :: GOTO SpellsMenu
 
     DISPLAY AT(8,1):"CAST ON WHICH PARTY MEMBER?";:"1) BERYL";:"2) REPTOSLICER";:"3) MARKUS";:"4) SKYLAR";
 
 
MidSpells-Keyscan2:
 
     GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu 
     IF K>52 THEN GOTO MidSpells-Keyscan2 ELSE IF K<49 THEN GOTO MidSpells-Keyscan2
     ON K-48 GOSUB ReceiveBeryl,ReceiveRepto,ReceiveMarkus,ReceiveSkylar
     GOTO SpellsMenu
 
 
ReceiveBeryl:
 
     GOSUB ActiveBeryl
     GOSUB SpellsMenu3
     BHP=RPHP :: BMP=RPMP :: RETURN
 
ReceiveRepto:
 
     GOSUB ActiveRepto
     GOSUB SpellsMenu3
     RHP=RPHP :: RMP=RPMP :: RETURN
 
ReceiveMarkus:
 
     GOSUB ActiveMarkus
     GOSUB SpellsMenu3
     MHP=RPHP :: MMP=RPMP :: RETURN
 
ReceiveSkylar:
 
     GOSUB ActiveSkylar
     GOSUB SpellsMenu3
     SHP=RPHP:: SMP=RPMP :: RETURN
 
 
SpellsMenu3:
 
          //this part loads the "RP" temporary variable set (receiver) with the info from the "A" temporary variable set (active)
 
     RPMMP=AMMP :: RPMP=AMP :: RP$=ACN$ :: RPNSP=ANSP :: RPNL=ANL :: RPHP=AHP :: RPMHP=AMHP
     GOSUB ClearBox
          //Display Receiver's Name and stats INSIDE the box//
     DISPLAY AT(8,RPNSP):RP$;:: CALL HCHAR(9,RPNSP+2,94,RPNL)
     DISPLAY AT(10,1):"HP:";RPHP;"/";RPMHP;:: DISPLAY AT(10,16):"MP:";RPMP;"/";RPMMP;
     DISPLAY AT(12,1):"CAST WHICH SPELL?"
     IF CMN=3 THEN GOSUB ReptoFinalCast
     IF CMN=2 THEN GOSUB SkylarFinalCast
     IF CMN=1 THEN GOSUB BerylFinalCast
     RETURN
 
 
 
ReptoFinalCast:
     DISPLAY AT(16,1):"1) HEAL";:"2) CURE";:"3) LIFE"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K>51 THEN GOTO ReptoFinalCast ELSE IF K<49 THEN GOTO ReptoFinalCast
     ON K-48 GOSUB HealSpell,CureSpell,LifeSpell
RMP=CMP
     RETURN
 
SkylarFinalCast:
     DISPLAY AT(16,1):"1) HEAL";:"2) CURE"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K>50 THEN GOTO SkylarFinalCast ELSE IF K<49 THEN GOTO SkylarFinalCast
     ON K-48 GOSUB HealSpell,CureSpell
     SMP=CMP
     RETURN
 
 
 
 
BerylFinalCast:
     DISPLAY AT(16,1):"1) HEAL"; :: GOSUB Keyscan
     IF K=13 THEN GOTO SpellsMenu
     IF K=49 THEN GOSUB HealSpell ELSE GOTO BerylFinalCast
     BMP=CMP
     RETURN
 
 
 
 
          //////////////////////////////////////////////////////////////////////
          //**Need to add status flag for "Healthy" "Poisoned" and "Fallen"   //
          //**As of now, Cure and Life do not do all that they WILL do once   //
          //**this is implemented fully.  Cure will heal "Poisoned" and change//
          //**status flag to "Healthy," Life will change status from "Fallen" //
          //**To "Healthy" and will allow "Heal" magic to raise HP.           //
          //////////////////////////////////////////////////////////////////////
 
 
HealSpell: 
     IF CMP<10 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: GOSUB Keyscan :: RETURN
     IF RPHP<1 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"MEMBER IS FALLEN"; :: GOSUB Keyscan :: RETURN
     CMP=CMP-10 :: RPHP=RPHP+10 :: IF RPHP>RPMHP THEN RPHP=RPMHP
     GOSUB SpellResult
     RETURN
 
          //This will also change the status flag to "Healthy" once that part is complete
CureSpell:
     IF CMP<15 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: GOSUB Keyscan :: RETURN
     CMP=CMP-15
     GOSUB SpellResult
     RETURN
 
          //Still Need to add status flag for "Healthy" "Poisoned" and "Fallen"
LifeSpell:
     IF CMP<20 THEN GOSUB ClearBox :: DISPLAY AT(15,1):"NOT ENOUGH MP"; :: GOSUB Keyscan :: RETURN
     IF RPHP<1 THEN RPHP=1 :: GOTO LifeSpellEnd
     RPHP=RPMHP
 
LifeSpellEnd:
 
     GOSUB SpellResult
     RETURN
 
 
 
SpellResult:
 
     GOSUB ClearBox
     DISPLAY AT(3,1):"HP:";CHP;"/";CMHP;:: DISPLAY AT(3,16):"MP:";CMP;"/";CMMP;
     DISPLAY AT(8,RPNSP):RP$;:: CALL HCHAR(9,RPNSP+2,94,RPNL)
     DISPLAY AT(10,1):"HP:";RPHP;"/";RPMHP;:: DISPLAY AT(10,16):"MP:";RPMP;"/";RPMMP;
     GOSUB Flash
     CALL SOUND(50,330,1) :: CALL SOUND(50,494,1) :: CALL SOUND(100,1319,0,494,10,330,10)
 
     GOSUB Keyscan
     RETURN
 
 
          //END Spells Menu//

 

 

 

 

 

There are still a few things I want to do to it... A display issue in "SpellResult" causes a bit more "redraw" of screen information than I would like. I will fix this this weekend.

 

Also want to add SPRITEs of both the casting and receiving players, then when the spell result occurs, a light "dusting" of some magic particulates will move over top of the receiving player as the stats are updated.

 

Right now, I'm exhausted. I've spent almost 16 total hours over two days and three nights working on this Peace-Time Spell functionality (from pen and paper through debugging) and it has worn me out. Done with it for tonight! :) It DOES function, it IS fully debugged, and I can honestly say that I have done the best that I could with my limited knowledge.

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

Well, the Forestia map is now 100% complete. It is a very different looking place now with all the updates. I will post a screenshot or two of certain portions of the map, just enough to give you guys something to look forward to.

 

Working on some condition-handling stuff now and should have a new video soon of the completed STATUS menu functionality.

 

The big things standing in my way now are the battle engine, equipping of armor and weapons, and the encounter routine. Once that is all complete, it gets really fun, as all I need do at that point is work in Magellan to create new maps for the other 5 worlds and add text.

 

The little finishing touches like title screen and music during the battle sequences are just going to be icing on the cake.

 

There is the matter of the game manual and Hero's Log (paper of course), but that is crap I can do on my tablet lounging around on the couch.

  • Like 2
Link to comment
Share on other sites

Now I want to revisit a question Ive asked myself many times... Maybe you all can offer your opinions.

 

I want this game to get played, so I need to figure out my target market...

 

Should I focus on users with max 180k disk capabilities or would it be safe to assume most users are playing on further-expanded systems?

 

This first world looks to be eating up about 30k right now in map data and program space, and I had planned to have separate XB programs for each world. Save party stats and inventory to a temporary file and the RUN "DSK1.NEXTWORLD".

 

If I do this, 180k may or may not be enough space once all routines are in place and map data is saved to disk.

 

Thoughts?

Link to comment
Share on other sites

Go big! Double sided, quad density!

 

Just kidding.

 

Can you set up your game to prompt for disk swaps when needed? Kinda like old dark caves and legends games

As a user with larger capacity it wasn't too big a deal to make them run all on one disk. If you can give the end user options on how they can load, play and store the game on disk it would be good?

 

conTInuing,

Ralph

Link to comment
Share on other sites

I initially had planned for multi-disk games, but I believe that may call for two disk drives, as many temporary variable values are stored onto a temp file on the main disk. I suppose I could write a routine to store all the variables in RAM just prior to disk swap, then the user swaps the disks, then write all the data back onto a second temp file on disk 2.

 

Hmmm.....

Link to comment
Share on other sites

Not being a programmer at all I have no idea how hard it is to set up the variables to ram, but if the majority of the ti world is still using a single sssd drive it would probably reach a larger audience for you. I'm betting most users here have expanded systems tho'.

 

Must have more power!!!!

Link to comment
Share on other sites

@James: i know there is a way, I just have not explored the possibility yet. :) I assume you're referring to emulation or a much larger disk size here...

 

If the program tells you to switch disks and you're running in Classic99, just say "ok" and the program would go about it's business, assuming you have swapped disks (when really you did not do anything). The program will continue to look in DSK1 for what it needs and it will find it, assuming all game files are saved to DSK1.

 

The same would apply to a larger disk or a HDC or whatever...

 

 

@Spark: It is not difficult, simply open the data file on disk, read all the data from the temp file into your program, assigning variable names to all the values and string variable names to all the text stuff (if there is any). Then, prompt user to switch disks, then do the same thing, but in reverse. Youd be printing the values of the variables you saved into RAM onto the new file on your new disk. I am pretty sure it would be all numeric variables, so as long as you know the order in which you're reading and writing them, it should not be difficult.

Link to comment
Share on other sites

I still only run 180k floppies, but, I also have the CF7. I'd say for now, develop away, leave yourself a little memory in case you need a disk swap function, but don't worry about it for now.

 

When you get close to the end, then you'll have a good idea how much space you actually need, and that's a good time to decide on your storage system. :)

Link to comment
Share on other sites

Yea, I just wanted to have the groundwork laid for a potential contingency plan in case I'm over the top.

 

BTW, a couple of space-eating variable sets and a few chunks of code are about to go byebye... I am finally going to become one of those "real programming guys" and use variable data array sets for a whole bunch of stuff. If you look at the code I posted several posts back, you'll see how this will be a real nice change.

 

BHP,BMHP,RHP,RMHP,MHP,MMHP,SHP,SMHP will all be members of array "HP(4,2)"

 

The same goes with MP(4,2)

 

There are also string variables for names, items, weapons and armor, all will be handled in string variable arrays.

 

This will also eliminate the need for the temporary variable sets A,C,and,RP which simply copied the values of the original variables and were used for manipulation. I will still need SOME kind of copy snd reload mechanism for SPELLS, but this should cut down on my program space considerably.

Link to comment
Share on other sites

Thought some of you guys might get a kick out of this.

 

When I'm not at home, I'm at work.... and I'm typically THERE more than I'm home. No desktop and no Notepad++ at work, so I do a bunch of stuff on pen and paper at work. Here's my "development environment" I carry around with me in a file folder. :) Notice the laminated "world" map. LOL!!

 

20150401_202840_zpsekmuhpde.jpg

  • Like 6
Link to comment
Share on other sites

I'm old school and I also like pen/pencil and paper. It's much easier to think. I often draw silly little diagrams with lines going from here to there showing the relationship between different things etc. It helps to get things straight in the mind, and you can often find flaws/issues in your method before you code it.

 

Old school rools!

  • Like 2
Link to comment
Share on other sites

Ive been doing just that. I had my laminated map out today and my printed code with marks all over it like "Why did you do this??" and "Jackass, fix this structure" in red... :)

 

I designed what is becoming the framework for my variable arrays and disk access routines on printer paper while on lunch.

 

People would walk by, look down at the table and my spread, some would ask, others just shook their head and walked away.

 

To those that asked, I got as far as "Im designing a framework to handle data for my...." and they nodded and walked off.

 

Good day today!

Link to comment
Share on other sites

Actually, one kid took some interest in it... He kept asking how you make a game and how my map played into it... He liked the map.

 

I spent 15 minutes of my break explaining the computer for which we all code and how BASIC works. He seemed legitimately interested and asked how he could get started learning BASIC. I told him about our group here and he said when he gets internet he will get on and read.

 

I live in a very poor rural area... Most folks back here "ain't-a-got-alotta-schoolin'" but theyre good people, most.

 

If I can get this kid sitting in front of a TI and playing with XB, it might save him from a life of NASCAR watching and random meth-induced wife beatings. LOL!!!

 

Small victories, one at a time...

  • Like 4
Link to comment
Share on other sites

I still only run 180k floppies, but, I also have the CF7. I'd say for now, develop away, leave yourself a little memory in case you need a disk swap function, but don't worry about it for now.

Yeah I think most people who are going to run this on actual hardware are going to have a CF7 so disk swapping isn't an issue (I think the CF7 can mount up to three disk images at once IIRC). Just make sure it plays nice with the F18a. :)

 

If I can get this kid sitting in front of a TI and playing with XB, it might save him from a life of NASCAR watching and random meth-induced wife beatings. LOL!!!

 

:D Someone needs to put that on a T-Shirt.

  • Like 2
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...