Author Topic: Samocal  (Read 21921 times)

0 Members and 1 Guest are viewing this topic.

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Samocal
« on: February 04, 2011, 02:45:19 am »
Samocal is an RPG I started and never finished over two years ago. It made use of Celtic 3, but it was still slow and data files were still very large. So guess what? I've been programming assembly for well over a year and ya know what, I'm getting a little bored. I think it is time I pick up this old project again, but this time I will use BatLib to take advantage of the speed and memory efficiency I designed it for. Below you will see what the old program looked like.
For an example of size, in the old version, a map uses about 1000 byte (16x24 tiles). In this version. 16x24 tiles will use less than 200 bytes.

Currently, my priority is on BatLib, but I figured I may as well get the word out here. Feel free to comment!

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: Samocal
« Reply #1 on: February 04, 2011, 02:46:10 am »
It looks excellent.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #2 on: February 04, 2011, 02:53:30 am »
THis looks nice. It would have been cool if it was finished. :D

One thing I noticed though is that it flickers when your char moves. Didn't Celtic III have sprite arguments that let you not update the LCD when displaying them?

Anyway hopefully a batlib version would be smaller. One major issue with my last games was the large map files. I used matrices so with all the commas and two digits numbers it filled my archive fast.

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #3 on: February 04, 2011, 11:32:10 am »
Yeah, I had the same problem. BatLib uses a string of bytes for tilemap data. The disadvantage is the ease of use (which is why I am made a sprite editor and map editor), but the advantage is size and speed. BatLib doesn't need to convert all those floating point numbers which saves over a thousand (maybe several thousand) cycles per tile. Plus, it is set up to make sprite display even faster because the result of one displayed sprite is the pointer to where the next tile is. Oh, jeez, I need to make a variable size tilemap method... I think I just figured out an easy way to make tilemaps with, say, 8x16 tiles or something crazy like that... Ideas update!

Offline ztrumpet

  • The Rarely Active One
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 5712
  • Rating: +364/-4
  • If you see this, send me a PM. Just for fun.
    • View Profile
Re: Samocal
« Reply #4 on: February 04, 2011, 04:24:13 pm »
Cool, "THE GAME" looks nice. :P I like RPGs... :D

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #5 on: February 05, 2011, 02:47:34 am »
I hate having to make a tilemap editor X.x. I tried in Axe before and it would just throw me a Done message. In BASIC it was usually slow so I just used Draw N Map in the archives.


Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #6 on: February 05, 2011, 11:27:33 am »
Ah, I actually find it pretty easy to do, now. I always use the same basic outline, though. Move the tile, press enter to place it, use two keys to cycle through tiles, and press clear to the clear the map. The map editor I currently have only does one map at a time. From the old BatLib version (including the program version) I made a map editor that handled the whole 64x128 map... I am currently working on that again :D

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #7 on: February 05, 2011, 03:08:57 pm »
Yeah my main issue was mostly in Axe. Idk why. My gripe with Axe was dealing with external appvars. I always had troubles with them. This is the main reason why I quitted Axe.

Also do you mean 96x64 instead of 128x96? Because the screen is 96x64 pixels ??? (Unless you don't mean pxl-test-based maps?)
« Last Edit: February 05, 2011, 03:09:34 pm by DJ Omnimaga »

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #8 on: February 05, 2011, 03:32:22 pm »
I meant 64 tiles tall by 128 tiles wide-- I was using the font hook method, so there were 8 maps by 8 maps that were each 8x16

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #9 on: February 06, 2011, 12:33:16 am »
Oh ok. That said, even then I am glad they're split, though, because I was also wondering how you fit 128x64 tiles in memory. ;D

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #10 on: February 06, 2011, 01:28:36 am »
Ah, it fit in 4096 bytes. I used Str0 to contain the font data and the tilemap data, so Str0 was 4108 bytes of data. Luckily it could be archived :D

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #11 on: February 06, 2011, 02:48:03 am »
Hmm now that I think about it, 128x64 in string format isn't too large, after all. I thought it was something like 50 KB, but it's 8192 KB. What kind of compression do you use to keep it under 8192, though?

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #12 on: February 06, 2011, 02:56:48 am »
Oh, it uses only 16 sprites, so each tile uses half a byte.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Samocal
« Reply #13 on: February 06, 2011, 03:21:53 am »
Oh wait you have half byte support too? :O

Btw does your asm tools allow people to squish their tile/sprite/map data to machine code format like the AsmComp(prgmNAME,prgmNAME2) command does? Because hex is twice larger...
« Last Edit: February 06, 2011, 03:22:57 am by DJ Omnimaga »

Offline Xeda112358

  • they/them
  • Moderator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 4704
  • Rating: +719/-6
  • Calc-u-lator, do doo doo do do do.
    • View Profile
Re: Samocal
« Reply #14 on: February 06, 2011, 10:55:06 am »
Ah, yeah it does that. It is command 5 and command 6 does the opposite. I want to add a squisher that works with weird bit sizes so like if you had only 8 tiles, you would need 3 bits per tile in the tilemap... It would also be useful for sprites... especially if they are, say, 5 pixels wide... good for compression...