+Gemintronic #1 Posted January 31, 2014 As a fallback if no savekey/atarivox is found this is a password system for save games. Right now the intention is to have 8 entries with 64 possible characters (A-Z, a-z, 0-9 and !?) This gives us 6 8-bit variables worth of save game information. There is no checksum built in. UP and DOWN changes the current character. LEFT and RIGHT changes the current field. FIRE switches between sets of 32 characters (A-5, a-!) ABCDEFGHIJKLMNOPQRSTUVWXYZ012345abcdefghijklmnopqrstuvwxyz6789?! Build #6: Thanks to bogax it now correctly displays all 64 characters (I think) Build #8: Can move between fields. Somehow bogax's bit reversing assembly doesn't like what I'm doing. Build #9: Blinking cursor! password09.bas password09.bin 1 Quote Share this post Link to post Share on other sites
bogax #2 Posted January 31, 2014 if curchar < 31 then goto drawlow 1 Quote Share this post Link to post Share on other sites
+Gemintronic #3 Posted January 31, 2014 if curchar < 31 then goto drawlow Should be: if curchar < 32 then goto drawlow Really? That was the self induced error? Thanks, man! Quote Share this post Link to post Share on other sites
+Gemintronic #4 Posted January 31, 2014 Otay Panky! Build #8 is a functional mock up. Meaning, you can move through all 8 fields and select all 64 characters. I tried reusing bogax's assembly to reverse bits but it ended up garbling portions of the playfield. This isn't anything bogax did. I bet it has to do with me somehow messing the timing up or using resources that his code also needs. So, I had to replace this: function wrevhi() asm tax lda PassFontHi,x and #$0F tay lda PassFontHi,x lsr lsr lsr lsr tax lda revhi,y ora revlo,x rts end return data revhi $00, $80, $40, $C0, $20, $A0, $60, $E0 $10, $90, $50, $D0, $30, $B0, $70, $F0 end data revlo $00, $08, $04, $0C, $02, $0A, $06, $0E $01, $09, $05, $0D, $03, $0B, $07, $0F end with some generic bB like this: swap result{0} = mytemp{7} result{1} = mytemp{6} result{2} = mytemp{5} result{3} = mytemp{4} result{4} = mytemp{3} result{5} = mytemp{2} result{6} = mytemp{1} result{7} = mytemp{0} return Quote Share this post Link to post Share on other sites
bogax #5 Posted January 31, 2014 functions always use temp1 and temp2 whether they need to or not 1 Quote Share this post Link to post Share on other sites
+Random Terrain #6 Posted February 1, 2014 If you do something like the version below, if the user holds the joystick in a direction, it will be slowed by "cooldown" but if the user taps in a direction, he or she can move through the characters faster instead of needing to wait: password08_2014y_01m_31d_2044t.bin password08_2014y_01m_31d_2044t.bas That way you can get to the character you want quickly and slow down when you need to. 1 Quote Share this post Link to post Share on other sites
bogax #7 Posted February 1, 2014 (edited) Here it is using the reverse function(however it only get's called inone spot so it doesn't really needto be a function)password08_mod.bas Edited February 1, 2014 by bogax 1 Quote Share this post Link to post Share on other sites
nanochess #8 Posted February 1, 2014 Maybe you could use a kernel like the used in Dark Mage http://atariage.com/store/index.php?l=product_detail&p=196 The letters look rather crisp and besides you could put a top line saying "PASSWORD" Quote Share this post Link to post Share on other sites
+Gemintronic #9 Posted February 3, 2014 Maybe you could use a kernel like the used in Dark Mage http://atariage.com/store/index.php?l=product_detail&p=196 The letters look rather crisp and besides you could put a top line saying "PASSWORD" Dark Mage wasn't made in batari BASIC. I think SpiceWare and other assembly guys were making a 32 character kernel. I don't think it has been released yet. If it were it'd have to be made batari BASIC compatible which is not something I'm capable of. I think some more UI elements like the word "Password" could be made from a sprite. Since this is a generic password system I was thinking I'd leave some details to the game programmer themselves. 1 Quote Share this post Link to post Share on other sites