Join us on Discord!
You can help CodeWalrus stay online by donating here.

Sorcery of Uvutu 84+ Series Port

Started by 123outerme, January 29, 2017, 06:32:06 PM

Previous topic - Next topic

0 Members and 4 Guests are viewing this topic.

123outerme

Recently, I've started work on a port of Sorcery of Uvutu to the monochrome z80 calculators. I'm using xLIB (monochrome) in place of xLIBC and have already started work on the black and white spritesheet and some porting of the main engine. String data, non-DCSE specific commands, and general ideas I've used can all stay, yet they'll probably all have to be changed in one way or another. Map data, some tricks using color (screen inversion, intro text fade-in, probably screen shaking, etc.) and other CSE specific things will all have to be entirely reworked for this port. I don't have any screenshots yet, as I'm still working on sprites and the like, but that will come soon.

As for my vision, I expect the monochrome version to likely run faster, due to the CSE's speed limitations being removed here. Also, as each overworld map will be colorless and the screen size will have to make each map smaller, I can only do so much in each, and battles will probably have to be more frequent per map. Think of it this way: In Sorcery CSE, battles would occur at a minimum, every 11 steps. For the CSE, 11 steps was enough to traverse half of most maps, making battles occur 1-2 times per map. This played a huge part in the balance I did for exp/money gain, HP, etc. Now, 11 steps will probably be enough to traverse 1.5 typical maps, meaning by the time you reach a boss in a world, you'd likely be underleveled without serious grinding. I'm looking to reduce that number to every 5-6 steps, which will mean technically more encounters, but encounters per map screen will likely stay the same.


Here's the latest screenshot showing all the game features. Shows all the features implemented!

You can download Sorcery of Uvutu Monochrome either under this post, or you can get both versions in the main, stickied topic.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

tr1p1ea

Awesome stuff to see 84+ users getting some love for this great game.

Like the speed so far too.

123outerme

Quote from: tr1p1ea on January 29, 2017, 10:18:04 PM
Awesome stuff to see 84+ users getting some love for this great game.

Like the speed so far too.
Thanks tr1p! It's gonna be a much larger project to port this thing than I had anticipated, unfortunately. The majority of the work I still have left to do is figuring out why I can't create or edit any AppVars (it creates an AppVar that is invisible (doesn't have a name or show the size in the 2nd+MEM menu), figure out how I will display text, and take the rest of the xLIBC commands and make them xLIB commands instead.


Here's a more updated screenshot showing screen transitions, the inside of houses, and a slight problem: I don't know why, but in the inside of houses, and I'm assuming this is true for every screen, the last row of pixels doesn't display. Not sure why, but it's a minor problem considering what I have left to do.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

JWinslow23

Quote from: 123outerme on January 29, 2017, 11:05:46 PM
Quote from: tr1p1ea on January 29, 2017, 10:18:04 PM
Awesome stuff to see 84+ users getting some love for this great game.

Like the speed so far too.
Thanks tr1p! It's gonna be a much larger project to port this thing than I had anticipated, unfortunately. The majority of the work I still have left to do is figuring out why I can't create or edit any AppVars (it creates an AppVar that is invisible (doesn't have a name or show the size in the 2nd+MEM menu), figure out how I will display text, and take the rest of the xLIBC commands and make them xLIB commands instead.


Here's a more updated screenshot showing screen transitions, the inside of houses, and a slight problem: I don't know why, but in the inside of houses, and I'm assuming this is true for every screen, the last row of pixels doesn't display. Not sure why, but it's a minor problem considering what I have left to do.
I can answer the last issue. In TI-BASIC, the last row and last column of the screen does not display, no matter what. It's stupid, but that's what it does.

123outerme

Quote from: JWinslow23 on January 29, 2017, 11:27:20 PM
Quote from: 123outerme on January 29, 2017, 11:05:46 PM
Quote from: tr1p1ea on January 29, 2017, 10:18:04 PM
Awesome stuff to see 84+ users getting some love for this great game.

Like the speed so far too.
Thanks tr1p! It's gonna be a much larger project to port this thing than I had anticipated, unfortunately. The majority of the work I still have left to do is figuring out why I can't create or edit any AppVars (it creates an AppVar that is invisible (doesn't have a name or show the size in the 2nd+MEM menu), figure out how I will display text, and take the rest of the xLIBC commands and make them xLIB commands instead.


Here's a more updated screenshot showing screen transitions, the inside of houses, and a slight problem: I don't know why, but in the inside of houses, and I'm assuming this is true for every screen, the last row of pixels doesn't display. Not sure why, but it's a minor problem considering what I have left to do.
I can answer the last issue. In TI-BASIC, the last row and last column of the screen does not display, no matter what. It's stupid, but that's what it does.
Yeah, it's a little dumb. If I draw a line at the bottom, it'll display, but the tilemap doesn't draw there for some reason.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

This looks great. As for appvars, I don't remember if the feature DCS7 had to create them worked but you could always just stick to TI-BASIC lists, even if it means they can be edited by the player.

My suggestion, though, since you seem to be downsizing house and village maps, would be to try to expand the world to have extra maps, because if you make each area 20x15 into 12x8 without adding extra maps to make up for the difference, the game will only last about 30 minutes lol. You could maybe change the villages and homes, but try to keep many of the overworld maps intact but not fitting into one screen.  Also yeah in order to use all rows of pixels for a picture you need to make the tilesheet on a PC then convert to 8xi using SourceCoder or something else other than an official TI software. The pic will be 779 bytes instead of 767 bytes and will use all rows of pixels.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

123outerme

Quote from: DJ Omnimaga on January 30, 2017, 01:48:12 AM
This looks great. As for appvars, I don't remember if the feature DCS7 had to create them worked but you could always just stick to TI-BASIC lists, even if it means they can be edited by the player.

My suggestion, though, since you seem to be downsizing house and village maps, would be to try to expand the world to have extra maps, because if you make each area 20x15 into 12x8 without adding extra maps to make up for the difference, the game will only last about 30 minutes lol. You could maybe change the villages and homes, but try to keep many of the overworld maps intact but not fitting into one screen.  Also yeah in order to use all rows of pixels for a picture you need to make the tilesheet on a PC then convert to 8xi using SourceCoder or something else other than an official TI software. The pic will be 779 bytes instead of 767 bytes and will use all rows of pixels.
I've tried to create AppVars. It might just be my dumped ROM, or Wabbit, or something, but it doesn't look like it works. I'll keep trying, though. As of right now, I've been just using a subprogram to hold map data so far (which hilariously is stored pretty space-consumingly in a matrix, yet is twice as small as their xLIBC counterparts).

Yeah, I have to downsize maps, since the screen is so tiny. I obviously also had to remove the HUD at the top too, to make sure it didn't feel like you were playing a Gameboy game on the Super Gameboy. (Basically it's an official Gameboy emulator for the SNES that displays the actual sized screen in the center, with the border being the same thickness as the screen). I'll see what I can do to increase map count.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

Yeah I remember the SUper Game Boy. I actually have a copy and it's nice, other than not being full screen. I prefer the Gamecube one. As for increasing map count, what you could do is take your big maps, split each room into 2x2 tiny maps then  inspire yourself from the smaller maps to redo them into 12x8 instead of 10x7 chunks. You could even keep them 10x7 and only alter walls so that they appear on both sides so that maps are connected properly, but have the HUD uses the top and  right of the screen
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

123outerme

#8
Update:

Edit: Sorry for the photobucket :P )
Showing off all of the features I've done so far. Here, you actually see maps changing like it does in the CSE version of SoU (although I clear the screen here for a little more clarity of what's going on, which I may transition over to the CSE version as well), handling 2nd keypresses properly (does nothing unless you're talking to an NPC (who right now is invisible :P ), starting battles (although like when I tested it for CSE, it is binded to PRGM for testing purposes, no random encounters as of yet, although that'll be pretty easy), and opening the overworld menu (in this version, the screen will scroll down, painting the screen black, and then clear to display the actual menu). In this version I will have to cover up more of the screen to display enough text, but that probably won't end up being an "issue" (aka something that annoys me), and will most likely have to reduce inventory space (aka the items menu) due to the screen obviously being smaller.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

#9
What do you use to make screenshots by the way? IIRC I had a similar issue happening before.

Anyway I can see stuff being drawn then disappearing, which gives me a clue of what would be displayed there, and I must say I like the battle transition and the overall game speed.

EDIT Nevermind, it was because of your image host. Now it shows fine. What's the vertical transition for,  btw?
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

123outerme


Here, I'm testing out the full battle screen. Right now, the menu text is hardcoded, but everything else works dynamically. Soon, I will display HP of you and your opponent and have the battle menu actually work.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

I like how it looks like. Very close to the original game. Have you tried adding a black line (from the xLIB libraries) above the floor so that the characters don't look like they're floating? Maybe that would look nicer. I don,t know if xLIB had a line feature, though, and if a 1 pixels rectangle caused a RAM clear, so be careful.

Also I would suggest that for things that are drawn one by one, such as the floor tiles, you use xLIB's options to not update the LCD immediately. I think it's the last argument of each command. This would also eliminate the flickering for the main character when he walks around maps. Basically, only update the LCD once the final sprite has been displayed (eg on maps, only do so when the character has been erased and moved and in battles, only do so once the enemy has been displayed, setting all sprites to not update LCD except the last one. Kinda like xLIBCSE GRAM switching except that it doesn't switch back and forth on the regular calcs.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

123outerme

#12
Quote from: DJ Omnimaga on January 31, 2017, 09:48:03 PM
I like how it looks like. Very close to the original game. Have you tried adding a black line (from the xLIB libraries) above the floor so that the characters don't look like they're floating? Maybe that would look nicer. I don,t know if xLIB had a line feature, though, and if a 1 pixels rectangle caused a RAM clear, so be careful.

Also I would suggest that for things that are drawn one by one, such as the floor tiles, you use xLIB's options to not update the LCD immediately. I think it's the last argument of each command. This would also eliminate the flickering for the main character when he walks around maps. Basically, only update the LCD once the final sprite has been displayed (eg on maps, only do so when the character has been erased and moved and in battles, only do so once the enemy has been displayed, setting all sprites to not update LCD except the last one. Kinda like xLIBCSE GRAM switching except that it doesn't switch back and forth on the regular calcs.
I've done what you've requested, and do I think it looks better now. The line works, and there is an xLIB command to draw the line. And now stuff like text, character redraw, etc. are all instantaneous (for the most part, you don't see character blinking or text drawing one line at a time). I've also done more work on the battle menu and added the ability for NPCs to say stuff, like in the original! In xLIB (vs in xLIBC), I can draw about 26 characters per line of text vs 20, but still 5 lines for each, although the xLIB text fits in the box better. Here's a screenshot of this stuff in action:

  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

Much better now. :) You should fix the flicker when the text box disappear, though :P (the screen becomes white)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

123outerme

Quote from: DJ Omnimaga on February 01, 2017, 11:59:59 PM
Much better now. :) You should fix the flicker when the text box disappear, though :P (the screen becomes white)
Awesome, glad it look better! And I just did, it was pretty simple actually. The flicker is because I have to redraw the screen after drawing the NPC dialogue over it, and since every screen clear before was because of a map transition and the screen becoming white was to aid in that transition, it whites out the screen before redrawing anything. Now, however, that's fixed. I also can't really add any more types of NPCs (just the innkeeper and the regular townsperson, both of which are already programmed in), so as far I'm concerned, the NPC code is finished. What's left to do is displaying (and picking up, but that'll come when I get the save file code done) of chests, randomizing battle starts, adding the ability to have bosses, and finishing battle code, and then I've got the overworld code all ready to program in the content.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Powered by EzPortal