This'll be my topic for my ASM shenanigans.
Text wall ahead.
Modular Minimug Box Mod
If you've checked this thread before, you probably know that most of my work involves a single box. This mod is no different. It aims to allow for (nearly) full customization of the minimug box. This is done through three stages: setup, static calculations, and dynamic calculations.
The setup stage controls, well, setting up the box. It clears space for the box, writes its tilemap, and determines its palette. Afterwards, it moves to the other stages.
Pictured: max tile width box.
Editing the tilemap is very easy. The file
\Setup\MMBTilemap.event contains the tilemap itself. Adding additional rows is currently not possible, but you are free to add up to 18d columns. The example above has the following file:
Max Width MMB Tilemap File
//Remember that this starts on the bottom
//row and works its way up.
#define MMBWidth 18
//Remember, this is the number of tiles wide. Each tile is 2 bytes
#define MMBHeight 06
BYTE MMBWidth-1 MMBHeight-1
BYTE $1A $00 $1B $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1C $00 $1D $00 $1E $00 $1F $00
BYTE $0B $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $50 $00 $52 $00 $54 $00 $56 $00 $57 $00
BYTE $0B $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $50 $00 $52 $00 $54 $00 $55 $00
BYTE $0B $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $50 $00 $52 $00 $53 $00
BYTE $17 $00 $18 $00 $19 $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $0E $00 $50 $00 $51 $00
BYTE $10 $00 $11 $00 $12 $00 $13 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $03 $00 $04 $00 $05 $00
Static calculations don't need to be updated every frame. They include background tiles, minimugs, text, and a few other things.
Pictured: Static calculation examples. Here, the minimug and name only need to be drawn when the box is first made.
It should be noted, however, that your static calculations need to include everything from your dynamic calculations. Otherwise, your dynamic things, like numbers, will not appear until a few frames after the box is done moving.
Dynamic calculations are updated every frame, allowing for things like sprites to be drawn. This allows for parts to be aligned to a pixel grid, rather than a tile grid.
Pictured: Dynamic calculation example. In this example, the numbers are not aligned to the tile grid and also need to be updated every frame, so they're dynamic.
Putting it All Together
I realize that I've just made a long version of the vanilla box. Let's spice it up a bit, shall we?
Pictured: Eliwan's monstrous MMB (Still WIP).
The 'modular' part of this mod makes it easy to deck the box out with whatever you'd like.
That Modular Part I Mentioned
'Wan's box looks really complicated, but it's assembled from a bunch of easy-to-use macros.
'Wanbox Static/Dynamic Calculations
These macros follow a predictable set of rules, with x and y coordinates usually being their parameters. There's a file called
\Modules\ModuleSetup.txt that gives some hints on a macro's parameters.
ASM Details on Macros
The macros consist of the following:
mov r0, #XX
mov r1, #YY
@@ Other optional parameters
ldr r4, Routine
nop @@ nop until aligned 4
If you're interested in writing your own routines, read the file marked
README.txt. It explains the standard inputs and register usage. Also, in the
Modules folder there are numberous
.asm files with comments, if you're interested in calling their routines.
Updates, changes, etc.
[1/24/2017] Initial Release! Contents:
- Calculation framework
- Tilemap framework
- 6 Character Modules
- 3 Number Modules
- Macros for these modules
- Macros for getting various stats
- Known issues:
- Sliding numbers may display random numbers
- Sliding box may shrink when exiting screen
- Names do not write properly past the default box width
Equipped item Preview [FE8]:
Equipped Item Preview
This mod widens the minimug box while also adding some things to control what's on it and how they look. It also display's a unit's inventory and droppable items. Here's an example from my project:
And here's the section of FE Direct #1 about it:
If you want my notes on the minimug box without downloading the rest of it, you can do so here:
Master MMB Doc
Here's some doc, if you're interested:
Read the doc!
Here's a goofy project for writing thumb code in EA:
Thumblib is a set of language raws for use with the
Everything Event Assembler and a set of macros to make using it easier. Throw 'Thumb.txt' into your language raws folder and #include thumblib.event to use it.
Suggestions, macros, gripes, etc. should be posted here.
Custom Map Sprite Palette [FE7/8]:
Currently undergoing major revisions, I'd avoid using this for now.
Custom Map Sprite Palette
Currently the FE7 version works better than the FE8 one. Use EA to assemble "FE# CMSP Installer.txt" where # is either 7 or 8. Instructions are included within the installer.
Purple Eirika is kind of subtle, but it works. A few issues: It overrides the link arena. All characters using custom palettes will keep the palette in the arena. Conversely, it does not work on the world map, so Eirika, for instance, would still be her usual blue.
This list will probably be updated often with fixes and new stuff. If you want a different style of installation (.dmp, .asm source, something without thumblib, etc) ask.