Wario Land 3 romhack with LUA flavour

Thanks guys for your feedback ! It was very frustrating at times to counteract what the game does (especially for the seal), and to stumble over and over on pieces of my own code that I wrote badly, but at the end I'm happy I can do that kind of thing to this sweet pearl of a game. I'm even more motivated to go on with the hacking tricks !

Next, I'm going for cave of flames : lateral eruptions of pockets of gaz (no farting) and lost orphans to retrieve (baby birds). I also want to toy with the mole enemy ... No easy stuff but it should be less complex than the seal. :wahlaughback:
 
Thanks guys for your feedback ! It was very frustrating at times to counteract what the game does (especially for the seal), and to stumble over and over on pieces of my own code that I wrote badly, but at the end I'm happy I can do that kind of thing to this sweet pearl of a game. I'm even more motivated to go on with the hacking tricks !

Next, I'm going for cave of flames : lateral eruptions of pockets of gaz (no farting) and lost orphans to retrieve (baby birds). I also want to toy with the mole enemy ... No easy stuff but it should be less complex than the seal. :wahlaughback:

Sounds awesome Blanchon! This is all stuff I'd never have expected was possible with LUA scripting in a million years!
 
No new video today, but I learn something huge today : where the ROM tile data for the level being played is localized in RAM between region transition (used to load next region's tiles). Watching a video on the data structure of Super Mario Land 2 ( here), I thought maybe I could also find it in the SRAM for WL3, and yeah I found it lol. I've already been making pretty ridiculous things with the game so far, including with blocks, but couldn't modify placement of level's tiles ingame, which was irritating me.

Toying with it is not my priority right now, I really want to finish my shtmup system for WL3 and realize a full playable section. Here's a little screenshot just for fun :
doyouhatethesebirdsasmuchaswariodoes.png
 
Oh wow! That's awesome!

Love the idea of Wario throwing axes at enemies as he rides an owl through the sky!
 
Oh wow! That's awesome!

Love the idea of Wario throwing axes at enemies as he rides an owl through the sky!

:) I'll try adding a table-tennis bat in his arsenal, to reflect projectiles.

Enemies are all birds of different species. For example : The one with black outlined eyes is an homing one, and the big ugly squary sprites are ones for a big bird (slower & more bulky, doesn't die in one hit). The core gameplay already works, now I have to add the variety, build a bunch of gfxs, put indications for the player, think about a boss, etc.
 
A screenshot is not enough to show wario's badassery, and I've completed the axe animation, so here is a short gameplay video for you guys only :

Charging the axe and throwing it make it a bit faster and more deadly : the first enemy impacted is killed as usual if it's from a little bird species, but unless a normal throw, it just slows down to the normal speed and keeps going on until it touches another enemy, then it disappears. So you can kill 2 birds with one stone axe. Big birds get 2 damages instead of one if touched by axe in fast state, 1 only in normal speed.
 
A screenshot is not enough to show wario's badassery, and I've completed the axe animation, so here is a short gameplay video for you guys only :

Charging the axe and throwing it make it a bit faster and more deadly : the first enemy impacted is killed as usual if it's from a little bird species, but unless a normal throw, it just slows down to the normal speed and keeps going on until it touches another enemy, then it disappears. So you can kill 2 birds with one stone axe. Big birds get 2 damages instead of one if touched by axe in fast state, 1 only in normal speed.


The fact that Wario can throw his axes completely horizontal reminds me once again of the fact that Wario's immense bicepces aren't just for show. :wargh2:
 
Having just seen the video, I'm gonna say it looks awesome.

Again, genuinely surprised this is doable in Wario Land 3 with LUA scripting alone (rather than ASM hacks).
 
Having just seen the video, I'm gonna say it looks awesome.

Again, genuinely surprised this is doable in Wario Land 3 with LUA scripting alone (rather than ASM hacks).

As long as there are RAM adresses being read by the game to process something, and you can write onto them, the game is at your mercy. It's not always the case of course, but a lot of times it's not necessary to control absolutely anything the game does on a specific task because you can just go around it with others you already control well.

For example : when I wanted to warp wario anywhere I want, I decided to bypass the warp system of the game (at the time I couldn't find the warp data stored in SRAM in room transitions), and for that to work I forced the coordinates of Wario in the level to match the warp point I wanted him to go just before he warps. Because in the level editor I made the sector (where Wario is forced to be) teleports to itself, and the game checks in which sector Wario is currently to retrieve the destination point, it would teleport to it and render normally tileset, tiles, enemies, etc.

But when something is done just reading ROM, well you're fucked. See music :All you have is a bunch of adresses for sound channels and their parameters in high RAM. The sheet is in the ROM, better edit it directly than spend your time doing the impossible.

So there are definitely limits with this method, though I'm fine with them right now.

-

Currently doing the GFX for the big birds (they are hilarious). For the boss, I'll probably do like the developers of WL3 did with rudy the clown : animated tiles for most of its body parts, and sprites for the rest (there's a limit to how many sprites you can display at once in a horizontal line).
 
Last edited:
Hmm, so I guess LUA scripting for Super Mario World would basically be able to do much of what UberASM would (since it mostly works with RAM addresses and stuff), but nothing that you'd need to patch code into the ROM for.
 
Hmm, so I guess LUA scripting for Super Mario World would basically be able to do much of what UberASM would (since it mostly works with RAM addresses and stuff), but nothing that you'd need to patch code into the ROM for.

Yes, only difference being with LUA scripting you don't need to store any value inside RAM and ROM for logic and various other purposes, because it's embedded onto the emulator, not the game itself. It means I can insert any new ressources I want without having to fear about the storage in ROM.
 


I needed a specific visual effect for the appearance of my custom bird boss, but I couldn't find a way to do this solely with RAM edits. So I went into the ROM. :pumpit:
 
Progress is being made on the shoot'em up section, made the animation for the portal where birds and boss will appear.

I also crafted special ASM code to write on VRAM bank1 whenever I want, so I'm not limited to bank 0. Vba re-recording wouldn't let me write on bank 1, and I didn't want to go on Bizhawk. This relieves me of a lot of pain :
- I'm no longer forced to make ultra gimmicky code to change enemy sprites on screen, since I have direct access to Bank1 which stores all their GFX.
- Bank 1 of VRAM also contains background subtiles I couldn't change before, which made some of my visual edits overcomplicated. This problem is something of the past.
- Attributes for each tile placed on the map are now accessible to me ( Video Display - GbdevWiki ). Very important, especially for the newcoming boss which uses a lot of BG tiles with specific palettes that aren't easy to prepare in WL3 editor.

Overall it means less planning ahead on the tileset with the WL3 editor, more work space, an easier life for me. :happyhoggus:
 
As I said on Reddit, this looks absolutely crazy. Like, the fact you've got a shmup section working in Wario Land 3 is super impressive in of itself, let alone one that mostly uses LUA scripting for the programming side here.

Seriously good job Blanchon, and I'm super excited to see how the full hack turns out.
 
Thank you again for the sharing CM30 ! :penguinbeer: Currently fixing my diagonal spring jump mod, which was based on an overcomplicated maptile detection in VRAM, when I could have just used the RAM adresses for his horizontal and vertical velocities (+collisions) lol.
 
Seriously impressive work man. I love the little eye twitch animation on the boss and the crosshairs and this is a very fun mechanic. It's so refreshing to see this game being modded.
 
Back
Top