Author Topic: [C /axe?] Hinawa Battle Engine  (Read 23594 times)

0 Members and 1 Guest are viewing this topic.

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
[C /axe?] Hinawa Battle Engine
« on: August 15, 2013, 11:10:00 am »
Hinawa Battle Engine


[CONTENT IN PROGRESS]

Keys:
  • SHIFT : Validate
  • ALPHA : Cancel
  • Arrow Keys : Move
  • Clear : Exit
« Last Edit: November 26, 2014, 04:55:21 pm by Eiyeron »

Offline TIfanx1999

  • ಠ_ಠ ( ͡° ͜ʖ ͡°)
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 6173
  • Rating: +191/-9
    • View Profile
Re: [Axe] Mother3?
« Reply #1 on: August 15, 2013, 11:20:11 am »
This looks great so far! :D

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: [Axe] Mother3?
« Reply #2 on: August 15, 2013, 03:02:30 pm »
Wow you really want to make a Mother clone for calcs? It would rule! O.O

Anyway good luck because RPGs are long to make. Make sure to optimize as much as possible to get around code limits (including making as many things as possible into data rather than being hard-coded).

Also will the title screen background style be used in battles like the weird backgrounds there were in the original games?
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
Re: [Axe] Mother3?
« Reply #3 on: August 15, 2013, 03:31:08 pm »
Olà, we're thinking about 5MHz calcs!

Why not... But ill be *very* slow, since I can't get a decent speed because Text() is used a lot...

It sure'll be a long-term project, this game has a cr*pload of numbers for a simple ennemy (status ailment resistance for instance)...

EDIT: DJ_O, I just got what you meaned. Also, why not? It won't be the only one animation, that would be repetitive...

EDIT2: Finally I added a grayscale background. Gray and white.

I'll need a lot of space, I'd like to have 32*32 ennemy sprites, and with background mask and 2 facing (front and back), that takes 512 bytes/enemy...
« Last Edit: August 15, 2013, 06:24:47 pm by Eiyeron »

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: [Axe] Mother3?
« Reply #4 on: August 16, 2013, 07:41:25 pm »
There are no 5 MHz calcs ???

And I see. Text can definitively be slow since TI's routines suck x.x. I wish that Axe actually used a custom text routine lol.
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
Re: [Axe] Mother3?
« Reply #5 on: August 17, 2013, 04:48:16 am »
5MHz or whatever ( a monster is named Whatever, it's quire funny).

I saw an Axiom somewhere... I'll dig into it...

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Re: [Axe] Mother3?
« Reply #6 on: August 17, 2013, 12:19:43 pm »
Else you can just use sprites to display text as a custom font routine, which would be way faster. Else, the best way is to ensure that as less text as possible have to be displayed every frame.
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
[Axe] Hinawa Battle Engine
« Reply #7 on: August 17, 2013, 12:23:55 pm »
Yeah, I still trying to avoid taking too much place at the moment. It's only the bqttle engine and still It uses 2500 bytes...

Anyway, I refactored a little my code, and it has dynamic sprite pointers! The background sprites doesn't take any static pointer.

I did some UI works, but not still not much to earn interest...

EDIT: I decided that I'll make only the battle engine first, and named it Hinawa. I updated a new version of the demo, (still not a functionnal battle core), with gray backgrounds, speed up HUD (forgot to put back the names), and a forst attempt at UI designing.

Press EXE to show the PSI box, and Shift to change background animations.

To do text sub-routines made me rework on hud routine, because I already used registers in tje Hud, and that made a huge less, and almost erase the main source. So I backed up the version's source you have here.

How should I use variables? Global A-Z? Stored in a list depending of the context?... I'm a bit lost here.
« Last Edit: August 17, 2013, 02:32:17 pm by Eiyeron »

Offline TIfanx1999

  • ಠ_ಠ ( ͡° ͜ʖ ͡°)
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 6173
  • Rating: +191/-9
    • View Profile
Re: [Axe] Hinawa Battle Engine
« Reply #8 on: August 17, 2013, 03:37:01 pm »
Those backgrounds look really great Eiyeron! :D

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
Re: [Axe] Hinawa Battle Engine
« Reply #9 on: August 18, 2013, 04:26:44 am »
It's mainly sprite drawing/generating.

The first is just blitting columns of the same sprite, but the second is more interesting : I'm generating a sprite on-the-fly. I was inspired from xor texture, but couldn't grasp the true form of it in a B&W screen, I remebered of the munching squares demo. It's principally the same mecanism, but animating it is more easier and fun.

Spoiler For Images of Xor Textures and Munching Squares:

Xor texture, mainly used in pmaceholder texture, bevause easy to generate


Munching Square!

EDIT : Some news. I have to take a lot of informations in the original Game.
Here what I know:
-GBA data is little endian. That make resd the data easier... (In fact no)
-Xp caps are 32-bit encoded, in little endian. 100 levels/character... :D
-Stats are semi-random : with each level we have different and random stats bonus. Eqch 10 levels the game tries to adjust your stats to a predfined stats stored in data... Yup, I need to collect 10*6 stats/character.
-PSI learning table...
-I get more or less 324 bytes to collect and understand per character.
-Line/move/IA databasrs planned... That's again a lot of data... :/
Oh, and I use now the Text Axiom. I certainly use Pucrunch too. There is a lot of data in this game. FYI the original game barely stays in a 32MB cartridge, the max for a GBA. And it's mostly compressed... Imagine what could they do if they had to do M3 on a 128MB DS cartridge, or 8GB 3DS one!

I'm planning on 24*24 sprites max for monsters, more animated backgrounds (certainly a fire for the third), But for now, I'll start on rolling meters, the main part of the battle engine.

I played again the game, and I noted some near things with these rollers, here is the most interesting:
Some ennemies are littlrally livings bombs-on-legs, and explodes dealing generally mortal damage, but there isn't enough time for our players to die because once the message "YOU WON" is displayed, the odometers stop instantly, even if you litteraly were blown off...

I hope a day playing a lot with this engine. I love how thr odometer add a stressing critical strategy core.

Oh, and what pc/calc tool is available for 24*24 sprites? (Preferably with 8*8 chunks, thanks)

EDIT 2: I started working on game logic (UI and key reaction), It's quite hard and new, because there are only non-modal UI, I need to constantly update game state, not only UI logic. So I started working on the game structure, and that seems quite nice at the moment. I can "select" bash, guard and PSI for character that have the right options... Only the dialog box is shown when  selecting PSI. I need simple stats and at least an ennemy to be fully capable of correctly working...

EDIT 3: I'm now, at this moment, getting some data. I'm getting level stats, and experience level curve. Little endian, so reversed. RomHacking, here I come.
« Last Edit: August 26, 2013, 11:36:40 am by Eiyeron »

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
Re: [Axe] Hinawa Battle Engine
« Reply #10 on: September 14, 2013, 04:47:24 pm »
To give some news, I'm still developping that. I redesigned the menu boxes to expand the top bar (it looks niver that way, less like Mother 3, but hey! It's my engine), I added a dynamic sprite routine, optimized two of the three battle backgrounds. But one feature at once.

The menu boxes and the top menu share the same drawing routine. The menu for PSI selection is begun, and the top bar is fixed and the drawing routines are optimized (use of Copy which I forgot).

The monsters will use a rutine that I'm proud of. THeir sprites are stocked and *compressed* into 8*8 chunks with RLE-indexing. FOr instance Mr Batty in grayscale only have 12/13 sprites (don't remeber the exact name) for each of the buffer and the mask, so 36/39. FOr a 35*35 sprite, that's cool.

The backgrounds got a lil optimisation I stole from DJ_Omnimaga and his Super SOnic Ball : copying the background top rows to the rest of the buffer is way faster than just spriting it.
This engine won't enjoy the GrayLib grayscale, because it's way too CPU-expensive (~70% of the CPU is used for the interrupt...)...
I'm still doing that, don't worry guys! Screens will be added later. For Omnom!

EDIT: Say HI to Mr Batty! I forgot to telle precisions to the key deobuncer/polling. It's just anarray which includes keys states. It's updated when your run the routine UKEY(). There is 4 states; Up, Down, Pressed (the instant where the key is pressed), and Released(the instant where the key is released). NO more instant key repeats!
« Last Edit: September 15, 2013, 07:21:37 am by Eiyeron »

Offline Sorunome

  • Fox Fox Fox Fox Fox Fox Fox!
  • Support Staff
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 7920
  • Rating: +374/-13
  • Derpy Hooves
    • View Profile
    • My website! (You might lose the game)
Re: [Axe] Hinawa Battle Engine
« Reply #11 on: September 15, 2013, 07:25:26 am »
That sure is looking epic O.O

THE GAME
Also, check out my website
If OmnomIRC is screwed up, blame me!
Click here to give me an internet!

Offline TIfanx1999

  • ಠ_ಠ ( ͡° ͜ʖ ͡°)
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 6173
  • Rating: +191/-9
    • View Profile
Re: [Axe] Hinawa Battle Engine
« Reply #12 on: September 16, 2013, 06:40:56 am »
That sure is looking epic O.O

You took the words right out of my mouth. ;D

Offline Eiyeron

  • Urist McEiyolobster
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1430
  • Rating: +130/-10
  • (-_(//));
    • View Profile
    • Rétro-Actif : Rétro/Prog/Blog
Re: [Axe] Hinawa Battle Engine
« Reply #13 on: September 16, 2013, 09:42:27 am »
Bad News: I have to find best optimisations because it's unplayablenwithout Full...

Offline TIfanx1999

  • ಠ_ಠ ( ͡° ͜ʖ ͡°)
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 6173
  • Rating: +191/-9
    • View Profile
Re: [Axe] Hinawa Battle Engine
« Reply #14 on: September 16, 2013, 10:24:38 am »
Hopefully, you can figure something out. If not, well... using Full isn't the end of the world. Maybe you can post a help topic asking for optimization help. :D