Opry99er Posted March 25, 2015 Author Share Posted March 25, 2015 (edited) 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 March 25, 2015 by Opry99er 3 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 25, 2015 Author Share Posted March 25, 2015 (edited) 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 March 25, 2015 by Opry99er Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 26, 2015 Author Share Posted March 26, 2015 (edited) 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 March 26, 2015 by Opry99er Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 26, 2015 Author Share Posted March 26, 2015 Found a bug. 5Th line in SpellResult should have RP prefixes on the variables, not R. Ugh... No rest... Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 26, 2015 Author Share Posted March 26, 2015 Another one. First line of SpellsMenu2, 4th equate. CMHP=AHP should be CMHP=AMHP must....stop....... Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 26, 2015 Author Share Posted March 26, 2015 (edited) 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 March 26, 2015 by Opry99er 2 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 27, 2015 Author Share Posted March 27, 2015 (edited) 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 March 27, 2015 by Opry99er 3 Quote Link to comment Share on other sites More sharing options...
Tempest Posted March 27, 2015 Share Posted March 27, 2015 Looking good! I can't wait to see this finished. 2 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 27, 2015 Author Share Posted March 27, 2015 Here ya go..... http://www.youtube.com/watch?v=GHzi4lG3jAM&feature=youtu.be 4 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted March 27, 2015 Author Share Posted March 27, 2015 @Tempest. THANKS FOR KEEPING UP WITH THE GAME DEVELOPMENT! Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 1, 2015 Author Share Posted April 1, 2015 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. 2 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 1, 2015 Author Share Posted April 1, 2015 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? Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted April 1, 2015 Share Posted April 1, 2015 I'd say, don't worry about the 180k limit. That will only be an issue if you want to run it on an actual TI, and the guys who do that kind of stuff have their own solutions. Quote Link to comment Share on other sites More sharing options...
sparkdrummer Posted April 1, 2015 Share Posted April 1, 2015 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 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 1, 2015 Author Share Posted April 1, 2015 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..... Quote Link to comment Share on other sites More sharing options...
JamesD Posted April 1, 2015 Share Posted April 1, 2015 Can you put a file on the disk that tells the program whether or not there are multiple disks?That way the disk change prompts will only be displayed when there are multiple disks and will be skipped when there are not. Quote Link to comment Share on other sites More sharing options...
sparkdrummer Posted April 1, 2015 Share Posted April 1, 2015 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!!!! Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 1, 2015 Author Share Posted April 1, 2015 @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. Quote Link to comment Share on other sites More sharing options...
Tursi Posted April 2, 2015 Share Posted April 2, 2015 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. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 2, 2015 Author Share Posted April 2, 2015 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. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 2, 2015 Author Share Posted April 2, 2015 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!! 6 Quote Link to comment Share on other sites More sharing options...
Willsy Posted April 2, 2015 Share Posted April 2, 2015 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! 2 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 2, 2015 Author Share Posted April 2, 2015 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! Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 2, 2015 Author Share Posted April 2, 2015 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... 4 Quote Link to comment Share on other sites More sharing options...
Tempest Posted April 2, 2015 Share Posted April 2, 2015 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!!! Someone needs to put that on a T-Shirt. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.