Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: FinaleTI on September 18, 2010, 08:40:02 pm
-
Since UTI is kinda dead, I guess it's about time I started posting about Pokemon TI here.
For those who don't know, Pokemon TI is my attempt at a Hybrid BASIC port of Pokemon Red and Blue, in 4 level greyscale. I'm able to devote some attention to it now because the Axe contest is over.
(http://i893.photobucket.com/albums/ac139/FinaleTI/NewRedVersionTitle.jpg) (http://i893.photobucket.com/albums/ac139/FinaleTI/NewBlueVersionTitle.jpg) (http://i893.photobucket.com/albums/ac139/FinaleTI/OakNewMethodDemo.gif)
(http://i893.photobucket.com/albums/ac139/FinaleTI/AAWALK.gif) (http://www.unitedti.org/forum/uploads/post-29350-12771588670019.gif)
So far I've completed the mapping engine and I am currently debating whether or not to make an Axe program to help with text. Currently, for my last build of the intro sequence, I was using hex sprites to encode the text. It was lightning fast, but horrendously memory inefficient.
What do you guys think?
-
Awesome! I'm glad you posted it here. Time to change that link in my sig... :)
Good luck Finale TI, it looks great! ;D
-
I think it looks amazing, but very slow. Movement will be quite tedious, I suggest pulling a bit more of the Asm side from the Hybrid on that detail.
-
I had considered redoing the map engine in Axe at one point, although since I'm using DCS7 instead of Celtic III now, tilemapping is actually faster. I'm not sure if the screenie I posted for the map engine was before I shortened the delay, though. I'll have see about posting an updated screenie.
-
Sounds good, I hope its faster :)
-
Looks nice, but I agree it's very slow. Also I doN,t like how the character disappears for so long between moves. Having coded xLIB grayscale stuff before, I know it might be possible to speed things up and reduce the character flash, although I know grayscale may not look great on the 83+. Hopefully you can sort things out.
(http://xlib.mtv-music-generator.com/xlib4lvscrolling.gif)
Btw Nostalgia isn't dead, I hope, right? Also is it an entire port of Pokémon? Because it is a massive project to take on, plus you would have fierce competition from Buckeye and Tifreak8x, both of which are pretty far into their projects. A Pokémon spinoff would be cool actually since there are currently 8 Pokémon projects going on x.x (Shmibs, Buckeye, Tifreak8x, JoeYoung, AMKiller, another guy on UTI I forgot the name of, yours and I believe jsj795 had one at one point, although I am unsure if it died or not), 3 of which are entire Pokémon clones.
Good luck on your project!
-
Glad to see it moved over here now. But remember, UTI isn't dead...just dormant (http://www.unitedti.org/forum/index.php?showtopic=9485&view=findpost&p=142325) :P
But good luck on your project and can't wait to see progress :)
-
According to Weregoose UTI is still doing pretty well, as well as it used to be, it's my fault and Cjgone's if UTI gets less active and I apparently alienated most of my userbase by shutting down my site everytime. Everyone is entitled to their opinions I guess, though. In my view, the entire community was really heading the wrong way starting in late 2006 and it went downhill by the end of 2007. I also think Omni should've been shut down one year earlier (or made private, with only a small core usergroup having access to it, for at least a year). For me it is hard to deny things went downhill for at least a year in the community when you look at those yearly post stats (although this excludes Calcgames and BrandonW's site):
UPDATED ON SEPTEMBER 17ST 2010, 1:30 AM GMT-5
UTI Omni Cemetch TI-BD Revsoft MC TI-FW DS Z80Rev OTBP Ticalcs HRP EPS TOTAL
2005 20033 9457 23064 3518 34918 1161 4373 583 4500 101607
2006 28340 30132 36520 9 7748 20345 4425 3756 0 4742 354 13 136384
2007 23985 15898 19577 423 4372 7115 3269 1263 0 2002 1587 78 79569
2008 12785 3783 6674 6193 2596 1985 4028 274 133 266 2 38719
2009 8876 15004 12535 4577 2387 1319 736 76 183 567 0 46260
2010 2753 46259 21470 1416 489 281 339 7 0 489 0 73503
It has since picked up again, though, and I could even say that it is doing better than it did 5 years ago. There are more releases, discoveries and a lot more programmers around. Ticalc.org doesn't get many comments on news articles, but years ago, all comments they got were off-topic, spam and trolls from people with no interest towards programming.
-
A Pokémon spinoff would be cool actually since there are currently 8 Pokémon projects going on x.x (Shmibs, Buckeye, Tifreak8x, JoeYoung, AMKiller, another guy on UTI I forgot the name of, yours and I believe jsj795 had one at one point, although I am unsure if it died or not), 3 of which are entire Pokémon clones.
Good luck on your project!
yeah, you should definitely include some thing new and innovative.(btw, mine is officially dead. i started it before i started foruming and realised there were so many others going on. now i just use the tileset i made as my default for mapping stuff.)
oh, and porting to axe would definitely be worth your time as this will have HUGE amounts of data, in the end, which will be several times larger in basic than in asm. a little additional speed wouldn't hurt either. this looks nice so far, though.
good luck!
-
Ah ok sorry to hear :(
Was it gonna be a spinoff or something? I remember a topic on MC forums but I think I was unable to view the pics.
Also to add to shmibs comment, another option could be to make it an hybrid of Axe and BASIC. Have most of the source in BASIC and the data and speed-intensive parts in Axe. Axe code is twice larger than BASIC but data is as small as in ASM. Splitting the game in multiple Axe and basic programs (and XCOPY ASM utility) would also circumvent the 8 KB 8xp executable code limit and the 16 KB one in apps.
-
actually, i can see that making something very wonderful indeed
the movement engine(collision checks and all that) could be written in basic to save space, and as soon as a move was completed it could switch back to the axe routine to draw the map in gray. key detection could then be exported to the Ans variable. finale could totally pull it off in pure basic, though
and as for the pkmn thing, yes it was a spinoff of sorts in that it had different character names, plot elements, key items, etc. dont worry, though; what i have planned to work on now is SO much better
-
Cool I can't wait ^^
-
Looks nice, but I agree it's very slow. Also I doN,t like how the character disappears for so long between moves. Having coded xLIB grayscale stuff before, I know it might be possible to speed things up and reduce the character flash, although I know grayscale may not look great on the 83+. Hopefully you can sort things out.
(http://xlib.mtv-music-generator.com/xlib4lvscrolling.gif)
Btw Nostalgia isn't dead, I hope, right? Also is it an entire port of Pokémon? Because it is a massive project to take on, plus you would have fierce competition from Buckeye and Tifreak8x, both of which are pretty far into their projects. A Pokémon spinoff would be cool actually since there are currently 8 Pokémon projects going on x.x (Shmibs, Buckeye, Tifreak8x, JoeYoung, AMKiller, another guy on UTI I forgot the name of, yours and I believe jsj795 had one at one point, although I am unsure if it died or not), 3 of which are entire Pokémon clones.
Good luck on your project!
The main cause of the slowdown is because of the character. I actually had a much faster version a while (I lost the source, though) that would create a copy of the matrix used for the map before execution, then store it to the original whenever I moved.
I abandoned that idea, though, because the matrices required would be massive. Perhaps I could used DCS7's ans stack to circumvent this though...
No, Nostalgia is not dead. I will probably post the source for the menu soon, to see where I could optimize it because I'm sure I could.
Pokemon TI is going to mainly follow Pokemon Red and Blue, but with some changes. For example, I'm planning on replacing the 'ghost PC' in Celadon City with a TI-84, plus I'm planning to add a female player character (a first for a TI Pokemon game).
actually, i can see that making something very wonderful indeed
the movement engine(collision checks and all that) could be written in basic to save space, and as soon as a move was completed it could switch back to the axe routine to draw the map in gray. key detection could then be exported to the Ans variable. finale could totally pull it off in pure basic, though
and as for the pkmn thing, yes it was a spinoff of sorts in that it had different character names, plot elements, key items, etc. dont worry, though; what i have planned to work on now is SO much better
That's a pretty good idea, but I'm gonna see what kinda speed I can get by reworking the engine again, as I'm sure I can get some sort of speed increase with the DCSB Libs.
-
I'm not sure if it would help, but you could read map data from the archive with Celtic III.
-
I use that to store the matrices, but xLib's mapping command requires the matrix in question to be unarchived. Celtic III does have a tokenized binary string tilemapping command, but I could never understand it.
-
Hmmm, I can look into that one for you at some point. (I don't have very much Celtic III experience).
-
I wonder if it's possible to read matrices from the archive with Axe.....
But, if it was, I'd have to figure out some way of initializing them without copying it to Ans as well. There is a program in the downloads section that's supposed to take a hex string and convert it to a matrix without storing it to Ans, but the program always crashes when I try it. Perhaps if I could figure out how to change a matrix's size in Axe?
-
Hmmm, I don't know too much about how matrices are structured, I can look into it and let you know.
-
Looks nice, but I agree it's very slow. Also I doN,t like how the character disappears for so long between moves. Having coded xLIB grayscale stuff before, I know it might be possible to speed things up and reduce the character flash, although I know grayscale may not look great on the 83+. Hopefully you can sort things out.
Btw Nostalgia isn't dead, I hope, right? Also is it an entire port of Pokémon? Because it is a massive project to take on, plus you would have fierce competition from Buckeye and Tifreak8x, both of which are pretty far into their projects. A Pokémon spinoff would be cool actually since there are currently 8 Pokémon projects going on x.x (Shmibs, Buckeye, Tifreak8x, JoeYoung, AMKiller, another guy on UTI I forgot the name of, yours and I believe jsj795 had one at one point, although I am unsure if it died or not), 3 of which are entire Pokémon clones.
Good luck on your project!
The main cause of the slowdown is because of the character. I actually had a much faster version a while (I lost the source, though) that would create a copy of the matrix used for the map before execution, then store it to the original whenever I moved.
I abandoned that idea, though, because the matrices required would be massive. Perhaps I could used DCS7's ans stack to circumvent this though...
No, Nostalgia is not dead. I will probably post the source for the menu soon, to see where I could optimize it because I'm sure I could.
Pokemon TI is going to mainly follow Pokemon Red and Blue, but with some changes. For example, I'm planning on replacing the 'ghost PC' in Celadon City with a TI-84, plus I'm planning to add a female player character (a first for a TI Pokemon game).
Ah nice to hear, and good idea to add some new stuff to the game. Some originality is always cool :). Good luck with the matrices issue! I remember it was annoying that stuff was stored to Ans when storing to variables. It limited us a lot more with the RAM x.x
-
Well, I figured out where the height and width of a matrix are stored using Axe. I was also able to change the matrix's size without affecting Ans! ;D
Now I just gotta see if Axe can read it from the archive. If so, I'll be making my tilemapper (or at least the display routine) in Axe.
-
Nice to hear. Another thing that you could probably do is compress the data in hex form and uncompress it using Axe, but I don't know how hard conversion to matrices is in Axe. It could make the game much smaller if not too hard to compress/uncompress, though.
-
I could probably use tokenized binary strings for some ridiculous compression. Reading and writing to matrices is really easy, if they're in the RAM.
I'm having trouble reading matrices from the archive, though...
-
Well, I figured out where the height and width of a matrix are stored using Axe. I was also able to change the matrix's size without affecting Ans! ;D
Wait, did you just change the variable's size bytes, or did you also increase the size of the actual data? You need to make sure to do both, or else bad things could happen.
-
Changing the height and width using Axe changes the overall size of the data as well, so there isn't a problem there. Plus, I was able to open it up in the TI-OS Matrix Editor without any problems.
-
I think that tokenized binary strings would be ridiculously uncompressed. In binary: 10011001 = 1 byte. In ASCII: "10011001" = 8 bytes.
-
By tokenized binary, I meant 0 becomes ?, 1 becomes >DMS, 2 becomes >Dec, etc.
And compared to a matrix, it is ridiculously compressed. Comparing to a 9x20 matrix to a tokenized binary string that is 9x20, that's 1631 bytes to about 180 bytes. That's a massive size decrease. Plus, I can still use up to 255 different tiles. Celtic III lets me manipulate hex, decimal and tokenized binary easily, so it's a logical choice for compression.
Changing the height and width using Axe changes the overall size of the data as well, so there isn't a problem there. Plus, I was able to open it up in the TI-OS Matrix Editor without any problems.
I was not entirely correct with this statement. Making a matrix smaller has no adverse effects on it that I can see, but increasing a matrix's size this way can make it highly volatile. It can cause the TI-OS to RAM Clear or hang when you try to delete it, plus in the matrix editor, the entries can be severely screwed up.
-
Making it smaller can fail too, as if you delete it there is still some left. You have to be careful. :)
-
True... I should ask in the Axe thread about adjusting a matrix's size.
-
if you figure it out be sure to spread the word!
-
I did actually. It's in the Axe Parser thread.
-
and i saw. thanks!
-
Nice, I'Ll have to check the topic.
-
I got the map engine kinda working! It uses tokenized binary strings and is written with Axe.
I got kinda bored, and since I was using interrupts for timing the grey anyway, I threw the Pallet Town theme into the background. ;D
I'll see about posting it up soon.
-
Wait Pallet Town theme, as in MUSIC? O.O
Btw is it finally gonna be hybrid of Axe and BASIC?
-
Yep. The music that plays in Pallet Town plays in the background of the test.
Right now it's using DCS7, Axe and BASIC.
-
O.O darn that's awesome! Was converting easy?
And I see. Good luck ^^
-
I just used Axe's Midi to Axe converter.
-
Ah ok cool. :D Did it convert well?
-
It converted pretty well, but it slows down a little when you scroll and it's slower than if you just ran the player, but it's still recognizable.
-
Ah ok I see. I wonder if it can be adjusted?
-
I could probably adjust it if I needed to.
Here's a video of it in action. I apologize for the low quality sound, but I'm still getting used to CamStudio.
(http://i893.photobucket.com/albums/ac139/FinaleTI/th_Pokemon.jpg) (http://s893.photobucket.com/albums/ac139/FinaleTI/?action=view¤t=Pokemon.mp4)
-
Nice, I wonder if it's possible to increase the beep lenghts? (although this might slow down the game a lot)
-
I already love the game, if you can put Pokemon TI with less than 100Ko, i put it now on my calc!
-
I slightly increased the beep lengths and I've attached the engine, if you guys want to play around with it. You'll need Celtic III or DCS7 so that prgmAA will work. appvMDATA needs to be unarchived, but prgmA2 can archived. prgmA6 is the source for the engine and prgmA66 is the executable.
-
Nice! I like how it's looking right now! Wonderful job on it. ;D
-
Wow, this is really cool!
-
Is it supposed to look like this????
-
Will this be an Add-in? I hope so, since that's when this could really reach new heights. I'm anixiously awaiting a beta testable version!
-
Is it supposed to look like this????
What program did you run? That's happened to me if your string is undefined. You need to run prgmAA, which should need Celtic III or DCS7 to work. If it fails after that, I'll have to take another look at it.
-
Oh I just ran Asm(prgmA66. I assumed since this was the compiled program that it was the one to run. Gonna try others later. Thanks for the info.
@sjasogun1: note that this is for the TI-84 Plus series of calculators, though. This will not work on Casio FX-9860G II (assuming this is what you mean, since you mentionned "add-in", which is how Flash APPs or Flash applications are called on the 3 Casio calcs that supports them)
-
Little update on the map engine.
I've updated it a little to work better with Axe 0.4.5.
Greyscale quality is near-flickerless on-calc and sound is faster and less choppy.
Here's a screenie without sound to show the new engine. ;)
-
Very nice.
-
So are you essentially just putting solid blocks as tiles and testing it?
-
Could we have a demo program so we can listen to the sound?
-
Nice job! ;D
-
Here's the demo. ;D
-
Which program do you run?
-
Sorry. Run prgmAA with 0 in Ans if you don't want the music and 1 if you want the music. Still requires Celtic III and DCS7.
-
Ooo, very nice!
-
Shiny! I really like it. ;D Excellent job! Is there any way not to make the music lag, though? It's a little distracting. =/
-
Its looking great :D I notice the screen take a while to refresh, and it like does a scanline as it renders the next screen. Is this intentional? Since i think it can be removed with clever use of updating buffers.
-
Very cool :) Sounds a lot better but ya, I agree with Z. It lags horribly when you get moving to much.
-
I can't seem to hear the music lagging, but that might have to do with the scanline problem as well, because the DispGraphrr is in the interrupt now to increase quality. The scanline thing is because before each row is drawn, the interrupt is turned off, then turned on once the row is finished. I'll have to see about getting around that.
-
couldnt you use a var that is set before scrolling and reset afterwards so that the interrupt skips over the dispgraphrr command when it's set? it wouldnt speed things up, but it might even it out at least
i love the sound, by the way!
-
This is very nice :D
-
Have you tested to see how well the greyscale looks without using interupts? That might be a pain free method of removing the scanlines. Or you could just disable them before the entire screen and then re enable them only after everything has been drawn maybe?
-
Or you could just disable them before the entire screen and then re enable them only after everything has been drawn maybe?
That could work if there was one screen update per interrupt, but there is probably a counter. So during the time that the interrupts are disabled, it will miss some counts.
-
How's this look?
-
Looks much better, although it still isnt updating all at once is it? Still, great improvement fro my view :)
-
Seems good but I still notice flickering during scrolling. That said, pretty much every scrolling grayscale engine I saw before flickers during scrolling x.x. It seems kinda inevitable on the 83+/84+ LCD :(
-
The flickering is probably a by-product of the horrible LCD, but while standing still the grey is almost perfect.
@Builderboy: It still doesn't update all at once, instead it updates every two rows. It's much less noticeable, on-calc or emulated, and once I fix the music lag, then I think I can call this pretty much done.
-
Sometimes it looks much better on-calc too. Wabbitemu can give us a good idea of how good gs will look like on-calc but it is not 100% perfect. Good luck on fixing the music lag :)
-
Still working on the music lag, but I did manage to have it draw a black tile whenever part of the map is out of bounds.
-
That's looking really cool :) Great job.
-
Nice!
-
Wow, that's awesome! Nice job! ;D
-
Looks great!
-
Moar progress!
-
That's incredible! On calc, is there a flicker like that, or is it better?
Good luck on this. :)
-
There is a slight flicker on-calc, but it's barely noticeable when standing still and a little more so when walking.
-
Ah ok. I was just about to ask the same thing 'cause that flicker is bugging me a little. Looks great though nonetheless!
-
Nice, but I am wondering what is causing the flicker? Couldn't you update the display only after the character is displayed? Or does it slows down the grayscale updating too much?
-
Wow! thats absolutley amazing! I really love the similarties with the GB version
-
Now I just gotta fix some problems with the music...
For some reason, it doesn't want to play at all. Would anyone be willing to help me?
:.A66
:[00FFD0FF50FFD0FF000000000000000000FFFFFF00FFFFFF00FF0BFF0AFF0BFF50FFD0FF00FFFFFF0AFF0BFF00FFFFFF3F407F8080FFFFE1→Pic1
:[FF7F787FF87F787F8040201028448201FF000000FF000000FFFE0EFE0FFE0EFEF87F787FFF0000000FFE0EFEFF0000003F5F7FBFBF80BFBE→Pic2
:[030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F3F3F1F0F06FCFCFCFCFCF8F060030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F1F0F0F0703FCFEFEFEFCF8F000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F7F7F7F3F1F0F00FCFCFCF8F0F0E0C0030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC7F7F3F1F3F1F0F06FCF8F8F8F0E0C000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F1F1F1F0F070300FEFEFCF8FCF8F060030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F070307030301FCFCFCFCF8F0E0C0030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F0703070F0703FEFEFEFEFCFCF830030F1F3F7F7F7F3FC0F0F8FCFCF8F8F83F3F3F3F1F0F0703F8F0E0C0E0C0C080030F1F3F7F7F7F3FC0F0F8FCFCF8F8F87F7F7F7F3F3F1F0CF8F0E0C0E0F0E0C0→Pic3G
:[030F1C337F3D7022C0F038CCFE5C0E4432393F372F1F09064C9CFCECF4F89060030F1C337F3A7022C0F038CCFEBC0E4432393F170F0F04034C9EEECE9CF8F000030F1C337F3D7022C0F038CCFE5C0E4432797773391F0F004C9CFCE8F0F020C0030F1C386B3F6F3FC0F0381CD6FCF6FC3F3F3F3F2F1F0906FCFCFCFCF4F89060030F1C386B3F6F3FC0F0381CD6FCF6FC7F7F3F1F2F1F0906FCF8F8E8D0E0C000030F1C386B3F6F3FC0F0381CD6FCF6FC3F1F1F170B070300FEFEFCF8F4F89060030F1F3F37111515C0F0188CFEFE4AFC110C070307020301FCFCFC7C78F020C0030F1F3F37111515C0F0188CFEFE4AFC110C0703040F0603FEFEFE7EFCECD830030F18317F7F523FC0F0F8FCEC88A8A83F3F3F3E1E0F04038830E0C0E040C080030F18317F7F523FC0F0F8FCEC88A8A87F7F7F7E3F371B0C8830E0C020F060C0→Pic1G
:[030C102040205022C030080402040A44322827342B1009064C14E42CD4089060030C102040205022C030080402040A44322827140B0804034C12E20A9408F000030C102040205022C030080402040A443248475029100F004C14E428D01020C0030C102040204020C0300804020402042020302C2314090604040C34C4289060030C102040204020C0300804020402044040201827180906041828489060C000030C102040204020C030080402040204201814120906030002020418E4189060030C102020101415C03008040A064244110807020402020144848444781020C0030C102020101415C03008040A06424411080702040B040342828242BC24C830030C102050604222C0300804040828A8222121221E0804038810E04020404080030C102050604222C0300804040828A8424141423D24130C8810E04020D020C0→Pic2G
:DeltaList(0,1,0,2,0,3,4,3,5,3,6,7,6,8,9,8)→GDB1
:DeltaList(0,1,0,2,0,0,3,0,4,0,5,6,5,7,8,7)→GDB2
:Lbl DG
:DispGraphrr
:GetCalc("Str1")→Q
:16→{L1}
:16→{L1+1}
:ClrDraw
:ClrDrawr
:Full
:GetCalc("vMDATA")→L→S
:0→Y→E→F+1→K→T
:FnInt(GT,0)
:Full
:Goto MP
:
:Lbl RND
:Full
:For(θ,0,7
:Full
:FnOff
:For(B,0,11
:θ+E*{L1}+B+F→Y
:Pt-Off(B*8,θ*8,{Q+Y}*8+Pic1
:Pt-Off(B*8,θ*8,{Q+Y}*8+Pic2)r
:Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic1
:Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic2)r
:For(Y,0,1
:If ((B+F)≥({L1+1})) or ((θ+E)≥({L1}-Y
:If ((B+F)≥({L1+1})) or ((θ+E+1)≥({L1}-Y
:Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF]
:Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF])r
:End
:Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF]
:Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF])r
:End
:End
:End
:θ+1→θ
:{H+J+GDB2}*32→N
:Pt-On(32,28,N+Pic3G
:Pt-On(40,28,N+8+Pic3G
:Pt-On(32,36,N+16+Pic3G
:Pt-On(40,36,N+24+Pic3G
:Pt-Change(32,28,N+Pic3G
:Pt-Change(40,28,N+8+Pic3G
:Pt-Change(32,36,N+16+Pic3G
:Pt-Change(40,36,N+24+Pic3G
:Pt-On(32,28,Pic1G+G
:Pt-On(40,28,Pic1G+8+G
:Pt-On(32,36,Pic1G+16+G
:Pt-On(40,36,Pic1G+24+G
:Pt-On(32,28,N+Pic3G)r
:Pt-On(40,28,N+8+Pic3G)r
:Pt-On(32,36,N+16+Pic3G)r
:Pt-On(40,36,N+24+Pic3G)r
:Pt-Change(32,28,N+Pic3G)r
:Pt-Change(40,28,N+8+Pic3G)r
:Pt-Change(32,36,N+16+Pic3G)r
:Pt-Change(40,36,N+24+Pic3G)r
:Pt-On(32,28,Pic2G+G)r
:Pt-On(40,28,Pic2G+8+G)r
:Pt-On(32,36,Pic2G+16+G)r
:Pt-On(40,36,Pic2G+24+G)r
:FnOn
:End
:K-1→K
:Return
:
:Lbl MP
:0→T→G→H→J+1→K
:sub(RND)
:Repeat getKey(15)
:If getKey(1) and (K=0
:E→T
:If H≥4
:0→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:E+1→E
:For(θ,0,649
:End
:End
:T+2→E
:!If H
:2→H
:Else
:0→H
:End
:End
:If getKey(4) and (K=0
:E→T
:If (H≠5) and (H≠7
:5→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:E-1→E
:For(θ,0,649
:End
:End
:T-2→E
:If H=5
:7→H
:Else
:5→H
:End
:End
:If getKey(2) and (K=0
:F→T
:If H≠10
:10→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:F-1→F
:For(θ,0,649
:End
:End
:10→H
:T-2→F
:End
:If getKey(3) and (K=0
:F→T
:If H≠13
:13→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:F+1→F
:For(θ,0,649
:End
:End
:13→H
:T+2→F
:End
:End
:LnReg
:Return
:
:Lbl GT
:.T+1→T
:.Q+1→Q
:.If T=2
:.0→T
:Normal
:DispGraphrr
:Full
:.End
:sub(MI)
:Return
:
:.MUSIC PLAYER
:[0020341E821CE91A6619F917A1165C1529140713F611F41000101A0F410E740DB30CFD0B500BAE0A140A8309FB087A0800088D072107BA065906FE05A80557050A05C2047D043D040004C70390035D032D03FF02D402AB02850261023F021E020002E301C801AF01960180016A015601430130011F010F010001F200E400D700CB00C000B500AB00A1009800900088008000790072006C00660060005B00550051004C004800440040003C0039003600330030002D002B00280026002400220020001E001D001B001900180017001500140013001200110010000F000E000D000D000C000B000B000A000A00090008000800080007000700060006000600]→Str9N
:Lbl MI
:Return!If GetCalc("vMDATA")
:!If L
:+1→C
:Return
:End
:ReturnIf C-1→C
:Lbl I2
:If {L+1}
:SinReg{{L}+Str9N}r,1900)
:If {L+2→L-1}→C=1
:Goto I2
:End
:Else
:S→L:90→C
:End
:Return
-
Wish I could help you out :( Sadly I can't.
How ever, that screenshot looks really good! I'm glad to see you found a way to get rid of that flicker on the character :) What's going on with the collision at the bottom of the screen?
-
The secret is that there isn't collision detection yet.
-
Ah ok. I thought it was just the bottom because it always seemed like you were just in the lines. But that explains it :P
-
Or he activated WtW glitch ;)
-
Or he activated WtW glitch ;)
WtW glitch? There was a walk-through-walls glitch in Pokemon?
-
Well, the real question would be: What wasn't there a glitch for in Pokemon Red and Blue?
-
Well the only one I ever knew about was the MissingNo. one :P
-
I notice there is no more flicker. Is it because you changed the LCD settings in Wabbitemu or did you successfully get rid of the flicker?
-
I fixed the flicker. I accidentally had it re-enable the interrupt (which draws the grey and plays the music) before drawing the character. I simply moved where it turned the interrupt on to after it draws the character and it works now. :)
Here's (http://s893.photobucket.com/albums/ac139/FinaleTI/?action=view¤t=Pokemon-1.mp4) a video of the current map engine in action. There are a couple of things I need to fix, including the music lag (which I believe I know how to fix).
-
Wow awesome!
Just a question though: why don't you use Youtube instead of Photobucket to host your videos? It seems more reliable to me most of the time (on Photobuckets, sometimes, some videos won't load) and would get more attention (and maybe attract people)
-
I'll see about trying to get a Youtube account.
-
Cool :D
Also is it me or the movement doesn't seems regular? The char moves two steps, stops, moves two more steps, stop, and so on. It migth be best to make every step equal IMHO.
-
I think I can make the movement a little more fluid.
-
That looks incredible. The only thing bugging me (and it's driving me insane) is the lag of the music. :)
-
I think the lag was not too bad, but it might be just me. The only thing I wish is if the beeps would last the entire duration of the frame, but I guess it is impossible.
-
I think the lag was not too bad, but it might be just me. The only thing I wish is if the beeps would last the entire duration of the frame, but I guess it is impossible.
What do you mean exactly by the whole frame?
This is looking great. I agree with DJ though, the walking seems really off to me.
-
I think the lag was not too bad, but it might be just me. The only thing I wish is if the beeps would last the entire duration of the frame, but I guess it is impossible.
What do you mean exactly by the whole frame?
This is looking great. I agree with DJ though, the walking seems really off to me.
Example: A whole note instead of an eighth, dotted quarter rest, and half rest. :)
-
Ah ok, that's what I thought. I think it mostly depends on what music file he converts, because I'm pretty sure I've heard some pretty good ones.
-
I think QUigibo converter doesn't support notes that long. I think he would need to write a music editor and write the song note by note, which could take a while.
-
Ah, ya, you're right. I misremembered.
-
;)
-
Nice and the gray looks pretty good too :)
Are you plannign to fix the movement soon btw?
-
Nice! That is looking awesome!
-
The only thing I wish is if the beeps would last the entire duration of the frame, but I guess it is impossible.
i kind of like the staccato, personally(though i doubt many people would agree with me). filling it in should be doable, but would take some doing.
as for movement, it looks like that because walking is in two frames, so to smoothen it out he would have to speed up the program altogether.
this is going to be the best, finale!
-
It's doable but it would be a pain in the ass to do. You'd have to hard code it by hand unless someone makes a MIDI converter that does length too. If I knew more about programming, and Axe, and how the sound with calculators in general. But sadly, I don't so I can't.
What he is saying about the walking is that the two frames don't merge well when you hold down a button. You always get the move, stop, move, stop, etc. so that's what he would have to smoothen out, not the speed.
But ya, this is going to be epic. That female sprite really looks great (Magic Banana right?).
-
What he is saying about the walking is that the two frames don't merge well when you hold down a button. You always get the move, stop, move, stop, etc. so that's what he would have to smoothen out, not the speed.
Yeah that's what I mean
-
yeah, that's what i meant, too.
i was assuming that the slight pause between steps was caused by collision detection etc, in which case that would have to be sped up to make things smoother(or the walking itself be slowed down =/)
i havent taken a look at finale's code, though, so i could definitely be wrong there.
-
I've actually never seen this topic before ... but nice job! It's looking pretty awesome already. How much is completed?
-
yeah, that's what i meant, too.
i was assuming that the slight pause between steps was caused by collision detection etc, in which case that would have to be sped up to make things smoother(or the walking itself be slowed down =/)
i havent taken a look at finale's code, though, so i could definitely be wrong there.
What I thought is that the game is paused completly when you walk around, but the delay between tile by tile steps is longer than the rest.
-
I did speed up walking a little bit, but as you noticed, it's still a little choppy. I also still have to fix the music lag.
This update was basically to showcase that I fixed all the little graphical glitches with the mapping.
If you guys wanna see the code, here it is.
:.A66
:[00FFD0FF50FFD0FF000000000000000000FFFFFF00FFFFFF00FF0BFF0AFF0BFF50FFD0FF00FFFFFF0AFF0BFF00FFFFFF3F407F8080FFFFE1FC02FE0101FFFFFFE1E1FFFFFFFFFFFFFFFFFFFFFFFFFFFF003F606E7F4051400080C0C0C04040407F3F10110E0000004C922BC1B6B84830FFFFFFFFFFFEF8E3FFFFF9E38B2FBFFF8B3FBFF3F3F3F3FFFF3F3F3F3F3F77F71FE0E0E020EFEBAFF807070704F7F7F5AFAFA0BFA0BF9F80F7F707FF07FDF901FFEAAFAAA0FFFF7FFFA7F71707FFFFFEFFC1C1C1C1FFC07FFF83838383FF03FE7F80808080808080FF00000000000000FE0103030303030380808080808080FF00000000000000FFFFFF7F7F47447C00FFFFFFFFFF00000003030303030303FFFFFFFEFEE2223E00FF8080FFFFFFF0D0FF0101FFFFFF0F0B80808080808080800101010101010101FF8080FFFFFFFFFFFF0101FFFFFFFFFF205866957DAF7FF9041A67AFBFF1CEF866BE4A9BDF9B552166F9DFD5F7D9EA660100030E1E0D2E2FC040C07078B074F437381C1F1C0C0700EC1CF8F8F8F0E000→Pic1
:[FF7F787FF87F787F8040201028448201FF000000FF000000FFFE0EFE0FFE0EFEF87F787FFF0000000FFE0EFEFF0000003F5F7FBFBF80BFBEFCFEFEFFFF01FD05B2BEA0A0A0BF887F0505050505FD11FE807F40515F40CE4080C0607068646261C07F3F112E4482016CF2E1C1878E4A31E0E0E0E0FFFFFFFF00071F7FFFFFF1F1FFFFF1FD9D9D9D9111D1D1D1D7DDFD5DFF202020FF3FF9BFFF040404FFFCFFFFBFBFBFA0BFA09F80FDFDFDF5FD07FF019FE0B0A0BFBF80FFF9070505FDFD01FFBFBFBFBFBFFFBFFFFDFDFDFDFDFFFDFF7F80BFBFBFBFBFBFFF00FFFFFFFFFFFFFE01FDFDFDFDFDFDBFBFBFBFBFBFBFC0FFFFFFFFFFFFFF00FF807F445F5F7F00FF00FF00FFFFFF00FDFDFDFDFDFDFD03FF01FE22FEFEFE00FFBFBFFF808FF8EFFFFDFDFF01F11FF7C0C0C0C0C0C0C0C00303030303030303FFBFBFFF808080FFFFFDFDFF010101FF20787EEF63D067FF041E7BF1469FF69879D177E5EBFF7521DE0FA2ABDBFFEE660100020F140E3C3E40C040F0A870BC7C2F27111713090700F4E408E80810E000→Pic2
:[030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F3F3F1F0F06FCFCFCFCFCF8F060030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F1F0F0F0703FCFEFEFEFCF8F000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F7F7F7F3F1F0F00FCFCFCF8F0F0E0C0030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC7F7F3F1F3F1F0F06FCF8F8F8F0E0C000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F1F1F1F0F070300FEFEFCF8FCF8F060030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F070307030301FCFCFCFCF8F0E0C0030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F0703070F0703FEFEFEFEFCFCF830030F1F3F7F7F7F3FC0F0F8FCFCF8F8F83F3F3F3F1F0F0703F8F0E0C0E0C0C080030F1F3F7F7F7F3FC0F0F8FCFCF8F8F87F7F7F7F3F3F1F0CF8F0E0C0E0F0E0C0→Pic3G
:[030F1C337F3D7022C0F038CCFE5C0E4432393F372F1F09064C9CFCECF4F89060030F1C337F3A7022C0F038CCFEBC0E4432393F170F0F04034C9EEECE9CF8F000030F1C337F3D7022C0F038CCFE5C0E4432797773391F0F004C9CFCE8F0F020C0030F1C386B3F6F3FC0F0381CD6FCF6FC3F3F3F3F2F1F0906FCFCFCFCF4F89060030F1C386B3F6F3FC0F0381CD6FCF6FC7F7F3F1F2F1F0906FCF8F8E8D0E0C000030F1C386B3F6F3FC0F0381CD6FCF6FC3F1F1F170B070300FEFEFCF8F4F89060030F1F3F37111515C0F0188CFEFE4AFC110C070307020301FCFCFC7C78F020C0030F1F3F37111515C0F0188CFEFE4AFC110C0703040F0603FEFEFE7EFCECD830030F18317F7F523FC0F0F8FCEC88A8A83F3F3F3E1E0F04038830E0C0E040C080030F18317F7F523FC0F0F8FCEC88A8A87F7F7F7E3F371B0C8830E0C020F060C0→Pic1G
:[030C102040205022C030080402040A44322827342B1009064C14E42CD4089060030C102040205022C030080402040A44322827140B0804034C12E20A9408F000030C102040205022C030080402040A443248475029100F004C14E428D01020C0030C102040204020C0300804020402042020302C2314090604040C34C4289060030C102040204020C0300804020402044040201827180906041828489060C000030C102040204020C030080402040204201814120906030002020418E4189060030C102020101415C03008040A064244110807020402020144848444781020C0030C102020101415C03008040A06424411080702040B040342828242BC24C830030C102050604222C0300804040828A8222121221E0804038810E04020404080030C102050604222C0300804040828A8424141423D24130C8810E04020D020C0→Pic2G
:.030C102050604222E018040202041454424141423D24130C4488F02090689060→Pic2G
:DeltaList(0,1,0,2,0,3,4,3,5,3,6,7,6,8,9,8)→GDB1
:DeltaList(0,1,0,2,0,0,3,0,4,0,5,6,5,7,8,7)→GDB2
:Lbl DG
:DispGraphrr
:GetCalc("Str1")→Q
:16→{L1}
:16→{L1+1}
:ClrDraw
:ClrDrawr
:Full
:GetCalc("vMDATA")→L→S
:0→Y→E→F+1→C→K→T
:Full
:FnInt(GT,0)
:Goto MP
:
:Lbl RND
:Full
:For(θ,0,7
:Full
:FnOff
:For(B,0,11
:θ+E*{L1}+B+F→Y
:Pt-Off(B*8,θ*8,{Q+Y}*8+Pic1
:Pt-Off(B*8,θ*8,{Q+Y}*8+Pic2)r
:Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic1
:Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic2)r
:For(Y,0,1
:If ((B+F)≥({L1})) or (((θ+E)≥({L1+1}-Y
:If ((B+F)≥({L1})) or ((θ+E+1)≥({L1+1}-Y
:Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF]
:Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF])r
:End
:If ((B+F)≥({L1}
:Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF]
:Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF])r
:End
:If θ+E+Y≠0
:Pt-On(B*8,θ+Y*8,[FFFFFFFFFFFFFFFF]
:Pt-On(B*8,θ+Y*8,[FFFFFFFFFFFFFFFF])r
:End
:End
:End
:End
:θ+1→θ
:{H+J+GDB2}*32→N
:Pt-On(32,28,N+Pic3G
:Pt-On(40,28,N+8+Pic3G
:Pt-On(32,36,N+16+Pic3G
:Pt-On(40,36,N+24+Pic3G
:Pt-Change(32,28,N+Pic3G
:Pt-Change(40,28,N+8+Pic3G
:Pt-Change(32,36,N+16+Pic3G
:Pt-Change(40,36,N+24+Pic3G
:Pt-On(32,28,Pic1G+G
:Pt-On(40,28,Pic1G+8+G
:Pt-On(32,36,Pic1G+16+G
:Pt-On(40,36,Pic1G+24+G
:Pt-On(32,28,N+Pic3G)r
:Pt-On(40,28,N+8+Pic3G)r
:Pt-On(32,36,N+16+Pic3G)r
:Pt-On(40,36,N+24+Pic3G)r
:Pt-Change(32,28,N+Pic3G)r
:Pt-Change(40,28,N+8+Pic3G)r
:Pt-Change(32,36,N+16+Pic3G)r
:Pt-Change(40,36,N+24+Pic3G)r
:Pt-On(32,28,Pic2G+G)r
:Pt-On(40,28,Pic2G+8+G)r
:Pt-On(32,36,Pic2G+16+G)r
:Pt-On(40,36,Pic2G+24+G)r
:FnOn
:End
:K-1→K
:Return
:
:Lbl MP
:0→T→G→H→J+1→K
:sub(RND)
:Repeat getKey(15)
:FnOn
:While getKey(1) and (K=0
:E→T
:If H≥4
:0→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:E+1→E
:For(θ,0,629
:End
:End
:T+2→E
:!If H
:2→H
:Else
:0→H
:End
:End
:While getKey(4) and (K=0
:E→T
:If (H≠5) and (H≠7
:5→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:E-1→E
:For(θ,0,629
:End
:End
:T-2→E
:If H=5
:7→H
:Else
:5→H
:End
:End
:While getKey(2) and (K=0
:F→T
:If H≠10
:10→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:F-1→F
:For(θ,0,629
:End
:End
:10→H
:T-2→F
:End
:While getKey(3) and (K=0
:F→T
:If H≠13
:13→H
:End
:For(J,0,2
:3-J→K
:{H+J+GDB1}*32→G
:sub(RND)
:F+1→F
:For(θ,0,629
:End
:End
:13→H
:T+2→F
:End
:End
:LnReg
:Return
:
:Lbl GT
:.T+1→T
:.Q+1→Q
:.If T=2
:.0→T
:Normal
:DispGraphrr
:Full
:.End
:sub(MI)
:Return
:
:.MUSIC PLAYER
:[0020341E821CE91A6619F917A1165C1529140713F611F41000101A0F410E740DB30CFD0B500BAE0A140A8309FB087A0800088D072107BA065906FE05A80557050A05C2047D043D040004C70390035D032D03FF02D402AB02850261023F021E020002E301C801AF01960180016A015601430130011F010F010001F200E400D700CB00C000B500AB00A1009800900088008000790072006C00660060005B00550051004C004800440040003C0039003600330030002D002B00280026002400220020001E001D001B001900180017001500140013001200110010000F000E000D000D000C000B000B000A000A00090008000800080007000700060006000600]→Str9N
:Lbl MI
:Return!If GetCalc("vMDATA")
:!If L
:+1→C
:Return
:End
:ReturnIf C-1→C
:Lbl I2
:If {L+1}
:SinReg{{L}+Str9N}r,1900)
:If {L+2→L-1}→C=1
:Goto I2
:End
:Else
:S→L:90→C
:End
:Return
-
Download? :D
-
Very nice! I can't wait for this. This looks just like a Pokemon game. Nice job. Wow. ;D
-
Nice FinaleTI! :D
How far are you from the code limit btw?
-
The program is about 5329 bytes, and that's including all the data for the player sprites. It's about the same size as the one in the screenie, but that's because I exported all the tile data to external programs and have the program reading and storing the map and tile data from archived programs to appvars. Plus, I started the dialogue routine so that's in there too.
I don't have a screenie, because I at least want to implement collision detection or fix the music lag before I upload the thing to my computer and screen-shot of it.
Edit: I remembered I made the walking more fluid and speed it up massively. ;D
-
well, nice job! I looks very nice ;D
-
Glad to hear FinaleTI :D
-
Sweet, can't wait for more screenshots :) I want to see this "new" (faster) walking engine :D
-
I just implemented some basic collision detection, which slowed it down marginally, but it only checks for one tile so far.
I want to work a little more on it before uploading, so.....
Here's some mock-ups of the battle engine to distract you!
-
Nice! However is it me or does the first pic seems corrupted? Squirtle face has an horizontal bar in it ???
-
I don't see anything wrong with picture. Maybe it's just hard to see?
Here's a bigger preview of it.
-
wow... this is very impressive...
nice!!!
-
I don't see anything wrong with picture. Maybe it's just hard to see?
Here's a bigger preview of it.
I mean the horizontal line on his nose. Or do you mean it's supposed to be like that?
-
That looks perfectly normal to me...
-
Wow, that looks wonderful! Nice. :)
-
Weird, maybe the pokémon sprite is supposed to be like that. It's just that the line seemed pretty long so I thought that part of the pic got corrupted x.x
-
To be honest, I think the nose may be one pixel too long; I don't remember Squirtle's nose being that big. :)
-
It might look a little weird because I shrunk the sprite down to 32x32.
Here's a comparison between the two. The one on the right is the original and the one on the left is the modified one.
-
Oh that might be why. I think the line looks weird because the black outline is cut or something.
EDIT: I wonder if it would be better like this?
-
That battle engine is looking great :) Sorry to hear about the collision detection though, hopefully that gets solved. Good luck :)
-
Music lag.... FIXED!
-
That is... NICE!
-
This is ... EPIC!
Can't wait for a release ;D
-
Here are the new programs for the demo.
Boundary checking is still a tad off, but not by much, and I've already fixed it on my calc.
To run the demo, run Asm(prgmZPKINST) to create the programs that contain all the data the engine will need, then run Asm(prgmA66) to run the demo.
You only need to run prgmZPKINST once unless you delete the programs ZPKMAP, ZPKMUSIC, ZPKTILE1, and ZPKTILE2.
prgmPKMAP2 is the source for prgmA66.
prgmAAA is the source for prgmZPKINST. I had to make prgmZPKINST because TI-Connect hated ZPKTILE1 and ZPKTILE2 when I tried to take them off my calc. They sent, but they were invalid to emulators (and I tried with several builds of Wabbit and a build of PinderTI), so I made ZPKINST instead.
I'd have a video, but I still have to re-install CamStudio and I only just fixed Wabbit, so...
EDIT: WOW. I forgot the attach the zip. Fail.
-
i hear a bit of lag still, but it's definitely much better than before(and walking is smoother as well!)
wabbit is deciding to corrupt the tiles, though...
-
Cool, I'll have to check this out too eventually. Glad this is still progressing. :)
-
nice job! but, (maybe it is because i used wabbit) i cant really see the difference between the tiles, maybe you could add a white/ light grey tile for the ground?
-
I'm not sure exactly what you mean by that, as the floor is all the same tile. I won't be adding any tiles soon, because this is a port of Red and Blue, so I'm gonna be using the original graphics except where I would need modifications to make everything fit nicely on screen, like in the battle engine.
Update, though!
Boundary and collision checking have been fully implemented, and I believe I have interaction with objects working.
Now I have to cobble together the downstairs map, then work on map linking.
-
More progress, YAY! :D
-
I'm not sure exactly what you mean by that, as the floor is all the same tile. I won't be adding any tiles soon, because this is a port of Red and Blue, so I'm gonna be using the original graphics.
Update, though!
Boundary and collision checking have been fully implemented, and I believe I have interaction with objects working.
Now I have to cobble together the downstairs map, then work on map linking.
never mind, it doesnt matter, though
-
Nice job on the progress!
-
Woot! Progress! :w00t:
-
Moar update (but no mudkipz right now...):
Map linking works near flawlessly, I just have to address a small issue with the character.
Then, onto NPCs!
-
wow great, i can't wait !
-
Moar update (but no mudkipz right now...):
Map linking works near flawlessly, I just have to address a small issue with the character.
Then, onto NPCs!
Cool to hear! :D
-
Fixed!
So here's a download and a screenie for ya.
-
THis looks very great! I wonder, though: Do you draw the entire screen at once? In the screenshot, it seems to gradually update, like if you used DispGraphrr everytime a row of sprite was drawn. O.O Or is it a WabbitEmu screen updating issue?
-
It draws every two rows, which is fast enough on my calc to be barely noticeable.
If anyone wants to optimize or help me rewrite my code to get around this, feel free.
-
Did someone say optimize? ;D
-
It draws every two rows, which is fast enough on my calc to be barely noticeable.
If anyone wants to optimize or help me rewrite my code to get around this, feel free.
Ah ok so that explains it. I don't mind, though. Many computer games do that when they have Vsync disabled and the effect in your game makes it look like a MSX or PC88 port of Pokémon. ;D
EDIT: Actually in PC-8801 case it was by columns, not by row.
-
First download ;D Looks nice! Tiles seem to be really different from what you have in the screenshot, though... But then I suck at using emus.
What does the installer do, by the way?
EDIT: Weird, when I restarted Wabbit, the tiles seemed to turn normal again, like the ones you had in your shot ???
-
That's great! I really like it with the music, but why does the music restart when I change rooms?
Also, it seems a little flickery. I think I blame Wabbit. >B)
Wonderful job Finale! :w00t:
-
The music restarting thing I can easily fix, as I know exactly where in my code that's happening, so it shouldn't be too hard to fix. I'm also contemplating how to do the map transition animation, like when going through a door, or up or down stairs, the screen fades to black, then back. I know I can do this with contrast manipulation, but I just have to find the right values.
I'm also working on the intro. I managed to start implementing special values into the text routine, like what squidgetx is doing for Ash: Phoenix. Currently, a value of [01] displays the player's name and and a value [02] displays the rival's name. I'll implement other ones later, but it's a start. I'm also trying to work out a name input routine like the one in the original game. I have to try and dig up my old PicArc archive (hopefully I still have a copy) of the GUI it used in my old Celtic III build of the intro.
-
how are you managing room linking in a quick/concise fashion? things like that tend to get tricky when there are four+ different link tiles on the same map.
-
how are you managing room linking in a quick/concise fashion? things like that tend to get tricky when there are four+ different link tiles on the same map.
Eventually, I'll have it looping through a list of data whenever a non-zero tile in the collision layer is stepped on in order to find where it links to. For the purposes of this test, it only supports one link. The collision layer is actually how I handle collision and object interaction, and eventually, NPCs.
-
The music restarting thing I can easily fix, as I know exactly where in my code that's happening, so it shouldn't be too hard to fix. I'm also contemplating how to do the map transition animation, like when going through a door, or up or down stairs, the screen fades to black, then back. I know I can do this with contrast manipulation, but I just have to find the right values.
I'm also working on the intro. I managed to start implementing special values into the text routine, like what squidgetx is doing for Ash: Pheonix. Currently, a value of [01] displays the player's name and and a value [02] displays the rival's name. I'll implement other ones later, but it's a start. I'm also trying to work out a name input routine like the one in the original game. I have to try and dig up my old PicArc archive (hopefully I still have a copy) of the GUI it used in my old Celtic III build of the intro.
I remember early NES games had the music restart completely when switching rooms. I even saw in-game menus using a totally different song to reduce the annoyingness of this. It seemed like back then, they couldn't figure out how to get around this. Later, some games actually continued the song where it left off the previous room, but there was usually some lag or the music stopped for half a second. I guess it has to do with how when switching from a room to another, sometimes the music is the same and other times it isn't.
-
Eventually, I'll have it looping through a list of data whenever a non-zero tile in the collision layer is stepped on in order to find where it links to. For the purposes of this test, it only supports one link. The collision layer is actually how I handle collision and object interaction, and eventually, NPCs.
i had a brainthought:
when a tile is stepped on you could have a parser run through the map data left to right, top to bottom from the beginning of your collision layer, adding one to a counter every time a link tile is encountered, and then append the map number to which the player should be directed(as well as the link tile number on that map where he will be appearing) to the end of the map data. it might be a little slow, but it's very small as well and could deal with 256 maps/link tiles per map =D.
-
O.O
-
Eventually, I'll have it looping through a list of data whenever a non-zero tile in the collision layer is stepped on in order to find where it links to. For the purposes of this test, it only supports one link. The collision layer is actually how I handle collision and object interaction, and eventually, NPCs.
i had a brainthought:
when a tile is stepped on you could have a parser run through the map data left to right, top to bottom from the beginning of your collision layer, adding one to a counter every time a link tile is encountered, and then append the map number to which the player should be directed(as well as the link tile number on that map where he will be appearing) to the end of the map data. it might be a little slow, but it's very small as well and could deal with 256 maps/link tiles per map =D.
Could you explain this a little more, or give an example program. I need something like this for one of my projects.
-
Finale TI, can I take a screen of your pokemon game to introduce my french tutorial about Axe Parser ?
This screen : (http://img530.imageshack.us/img530/6958/wabbitemu.gif)
-
Am I missing something? I thought this was in Hybrid Basic? ???
that said, that lookS AMAZING! :o
-
Finale TI, can I take a screen of your pokemon game to introduce my french tutorial about Axe Parser ?
This screen : (http://img530.imageshack.us/img530/6958/wabbitemu.gif)
Sure! Just accredit it to me, of course.
Am I missing something? I thought this was in Hybrid Basic? ???
that said, that lookS AMAZING! :o
Well, actually, most of it is gonna be made in Axe now, and currently it'll use a BASIC launcher, but if I can squish small enough, I may try to have it launch from an app.
-
Heh, you spelled Phoenix wrong :mad: ;)
Nice to see my npc engine style is of use. The hardest parts to get are the conditionals and stuff :P
Also, if you want a custom input routine, I have one similar to the Pokemon style that you can take a look at if you want. It writes the string to the beginning of L5 and is capped at 8 characters, though that of course could be changed easily :P
-
To that, I can only respond:
-
Wow, nice Finale. That looks great. ;D Yours too squidgetx. :)
-
Could you explain this a little more, or give an example program. I need something like this for one of my projects.
ok, every tile in a map has a number by which it can be identified, going from zero to [width]*[height], running from left to right, top to bottom(conventionally), yes? well, a similar system could be used to enumerate all the link tiles in a given map. If one were to start at the top left corner of the map and move left to right, top to bottom, each link tile could be numbered in succession to give it a unique identity. example:
map data(where 00 is a "normal" tile and 11 is a "link" tile)
[00110000
[00000011
[11001100
[11110000
there are a total of six link tiles, so they would be numbered like so
[--01----
[------02
[03--04--
[0506----
(i'm probably over-explaining this a bit, but better safe than sorry and all that)
then, to determine which tile has been stepped on, the programmer need only use a for loop which is [player's current Y in map]*[total map X]+[player's current X in map] long which searches through the map data, left to right, top to bottom, and increments a counter every time a link tile is encountered. the number stored in this counter when the for loop terminates can then be used to determine how many link tiles are in listed in the map before the one on which the player stepped, and thus the unique number for the tile on which he stepped.
axe psuedo-code
:0->C
:for(L,0,[player's current Y in map]*[total map X]+[player's current X in map]
:If {[map data pointer]+L}=[number used to define a link tile]
:C+1->C
:End
:End
:C-1->C ;because this counting method will label the first tile as link tile number 1, and we want it to be number 0
then, the programmer can store, concatenated to the end of the map data, a list which has three values for every link tile in that map. these three values are: the map to which the tile links, the link tile number in that map on which the player is to appear, and the direction in which the player is to face when he appears.
so, taking our previous example map with six link tiles:
[00110000
[00000011
[11001100
[11110000
we would have to add to the end another line which looks like this
[[map #1][tile in map #1][direction to be faced #1][map #2][tile in map #2][direction to be faced #2]...
you get the idea
then, to access this data one would only have to use
{[total map length(X*Y)]+[map data pointer]+(C*3)+[0,1, or 2, depending on which piece of information you want]}
then, to place the player in the proper position in the new map, a similar loop needs to be used:
:0->D->L
:Repeat C+1=D
:If {[map data pointer]+L}=[number used to define a link tile]
:D+1->D
:End
:L+1->L
:End
L will then contain the tile number upon which the player is to stand, and a simple operation
L^[total map width]->X
L/[total map width]->Y
returns the player's X and Y positions in that map
that was just a little bit overkill, wasn't it? XD
-
Heh, you spelled Phoenix wrong :mad: ;)
Nice to see my npc engine style is of use. The hardest parts to get are the conditionals and stuff :P
Also, if you want a custom input routine, I have one similar to the Pokemon style that you can take a look at if you want. It writes the string to the beginning of L5 and is capped at 8 characters, though that of course could be changed easily :P
To that, I can only respond:
Both looks nice. I like the 2nd one better but the first one got more characters on one page so I guess both are good.
-
I'm not actually completely done with mine yet, but that's almost an exact replica of the GUI for the one in Pokemon Red/Blue.
I have to change a couple of the chars to special symbols. Like the PK symbol or the male or female symbols, etc.
-
Just a little feature : character don't walk when he change direction.
-
The new screenies look great! When did you switch this over to Axe?
-
Could you explain this a little more, or give an example program. I need something like this for one of my projects.
<very large post goes here>
Very nice. I might have to use that. Albeit slightly differently, but it does give me a good idea. Thank you!
-
*BUMP*
Wanted to show I was still working on this. Slowly, but surely.
I've drawn up the special symbols, though I don't have them all on my computer, so I can't show you yet.
I've also been working on stat generation and such, and I feel I've got a good start, but I can't figure out the TM-HM flags.
It's a seven byte set of flags for each Pokemon that determines what TMs and HMs they can and can't learn. If someone could help with this, it would be greatly appreciated.
The TMs which a Pokémon can learn are stored as a bunch of flags. Starting from the LSB of the first byte, and ending with the MSB of the last byte. The five HMs are treated as TMs 51-55.
These are the flags for Bulbasuar:
01 2D 31 31 2D 41 16 03 2D 40 55 00 40 E5 40 21 2D 00 00 03 A4 03 38 C0 03 08 06 00
Here (http://bulbapedia.bulbagarden.net/wiki/Bulbasaur_%28Pok%C3%A9mon%29/Generation_I_learnset#By_TM.2FHM) is the list of TMs and HMs Bulbasaur can learn in Generation I.
And the link (http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_base_stats_data_structure_in_Generation_I) to the base stats data structure page.
-
It's awesome seeing this being worked on once more :D
-
This is an ingenious project, keep it up!
-
Your confusion might stem from the fact that Axe enumerates the bits in bytes backwards compared to most other assembly standards. This means that, contrary to Axe's system of bit numbering, in assembly bit 0 is actually the least significant bit and bit 7 is the most significant bit in a byte. So you don't want to look at the data like this:
A4 03 38 C0 03 08 06
10100100 00000011 00111000 11000000 00000011 00001000 00000110
You want to look at it like this:
A4 03 38 C0 03 08 06
00100101 11000000 00011100 00000011 11000000 00010000 01100000
-
Runer122 thank you!
It makes perfect sense now. The 7 bytes are just a string of bits that are on or off depending on whether or not the TM or HM in question can be applied.
And thanks everyone else for the support!
-
Cool! I'm glad you're working on this again. ;D
-
It's still alive! :D
-
/me sends out .4!
.4 used TM25!
No effect!
Anyway, nice to see this is back up as well along with Nostalgia
-
Thanks guys.
I'm trying to see if I can make heads or tails of this page (http://translate.googleusercontent.com/translate_c?hl=en&ie=UTF-8&sl=auto&tl=en&u=http://www.magicstone.de/rhwiki/article/Grafikkomprimierung_PKMN_RGBY&prev=_t&rurl=translate.google.com&usg=ALkJrhiOEsrbdA62Xb4aaErOgTw3MNEDNg), though. If I could figure out the compression technique used in Red and Blue, that could make my life even easier, quite possibly. Then I could theoretically grab the hex right out of the rom. Of course, that depends on how efficient that compression would be in Axe.
-
Glad to see this worked on again. Good luck :)
-
I've been dreaming up an image compression scheme that I still have yet to test, but in the mean time, I was able to draft a rough outline of the move data. It's currently 7 bytes. And here it is.
Size: 7 bytes
Critical Chance byte
Effect nibble
Base Power byte
Type nibble
Accuracy byte
PP 6 bits
Effect accuracy byte
Affects whom bit
Priority signed byte
Contact bit
I used the Generation III move data structure as a base, and it's very similar, albeit lacking 3 bytes of padding.
-
hey, the compression method it uses looks similar to one i recommended! compressing all the white space and leaving the others uncompressed.
you can probably make a more efficient method fairly easily, though.
good luck on translating all the moves.
-
Interesting. If I ever made a RPG in Axe I would probably want to use similar methods.
-
*gasp* you even have the girl player, Blue! (It's Green in the US version) Nice replica but you forgot her earrings
-
sry dbl post....
but how far is this project? complete? near complete? not close to complete?
-
Why don't you just edit your old post to include the contents of your secondary one?
EDIT: juju haha you lose
-
sry dbl post....
Yeah double posts are not really recommended, we strongly recommend you to edit your posts instead.
-
oops didnt see the edit button before... :banghead:
ok how do i get the URL Link pic for the Pokemon TI supporter?
-
Since someone bumped this, I guess I have to start working on it again...
This project is very far from completion, and I have to rewrite the mapping engine, so major progress on this might not be immediate, though this and Nostalgia will most likely become my major focuses once more. I need to rework mapping engine, because although it looked pretty, most of it was hacked together, and I did not organize it well. I also believe that if I don't redraw the entire screen every time I move, not only will there no longer be a weird scanline/refresh effect, but the engine may well run faster too.
As for the userbar, copy this:
[url=http://ourl.ca/7099][img]http://i893.photobucket.com/albums/ac139/FinaleTI/PokemonTISupporter.png[/img][/url]
into your signature, and it should work.
-
thank you!!! ;D ;D ;D
-
Don't feel bad. I rewrote pokemon purple's walking engine at least twice, and the overall game has been rewritten once to handle variables in an organized fashion.
-
Will this run on my 83 plus not silver?
And suggestion: for filesize and play quality, make it really short, but extremely replayable. Either that or make it have a shallow story with endless arcade style gameplay. Examples:
Pokemon, beat it in five minutes but played for the high score
Pokemon that never ends
-
Will this run on my 83 plus not silver?
I highly doubt it will. I have given consideration to a more 83+BE friendly version (no greyscale, simpler + smaller sprites in general) to be made alongside it, which would be compatible with the regular version. Making an 83+BE friendly version is not a huge priority for me right now though, as my main priority for this project would be to get the regular one up and running again.
And suggestion: for filesize and play quality, make it really short, but extremely replayable. Either that or make it have a shallow story with endless arcade style gameplay. Examples:
Pokemon, beat it in five minutes but played for the high score
Pokemon that never ends
This is going to be as close as a direct port of the original Pokemon Red and Blue as possible. That's always been the goal, and will remain the goal. Also, I'm not sure how well Pokemon would translate to an arcade game. Pokemon Stadium is kinda fun, but it really isn't the same. To me, Pokemon works best as an RPG, and I want to remain faithful to that.
-
What i meant by arcade gameplay:
A game that doesn't have a storyline so it never ends. Kind of like adventure quest (mmo). It is an RPG, but it doens't have a coherent plotline so it doesn't have too end, therefore giving it literally endless gameplay.