[Fangames] What are you working on?

Well first off just to clarify, I wasn’t the one doing the Berserker recolor or trying to make animations compatible across other classes, that was someone else. Don’t want to take credit where it’s not due.

Second, yours does look good, but I’ve just never been a fan of how the right hand glove is shaded on the first frame of animation. Something about the way the dark purple and dark gold are used together just doesn’t sit well with me. Maybe I’m not paying close enough attention to all of the frames and instead just working with the standing one the most but I like where I’m headed with this so far:

I’ll have to see how a few other frames look with this recolor before I fully commit to the recolor. You might be right about time spent vs result but I think adding the extra unused colors would be nice regardless. Thanks for the concerns though!

Oh that might be @BlueDruid or someone, my mistake.

Idk feels like you’re grasping at straws, but like I said, I’m not going to try and make you stop haha

http://puu.sh/oHQ7b/97a533b7e1.PNG
Yes… It already worked before…
The berserker palette edit is the only edit of a vanilla animation I’ve done. The only other one I did was my own Griffon Knight.

I think if he makes the shoulders/body narrower and edits the hair a bit it’ll be better than the current version.

Yeah, fair enough. I’m rather bad at doing graphics stuff so advise is always appreciated! I’ll work on it a bit and see how it turns out.

So with the help from my paymaster Zim and his merry friends on Discord, I managed to get V2 of my Female Great Lord out. Now it looks more female!

Imgur

7 Likes

Good work, looking good. :wink:

Now THAT is a bangable Hector.

2 Likes

https://youtu.be/A8cD_-iCwEE

Rescue []
Pair Up [
]
Transfer []
Switch [
]
Separate [*]
Dual Guard []
Dual Atk []

Almost there!

7 Likes

Can I use this for my hack FE6.5

[] Debuffs
[
] Rallys
[] Inflicting Debuffs
[] Giving Rallys

2 Likes

[x] Doing fuck all

8 Likes

:ballot_box_with_check: Standing sprites
:ballot_box_with_check: Walking sprites
ロ Jumping sprites
ロ Attacking sprites
ロ Decide whether or not I want to go through with my original idea or decide upon a new, more efficient one
ロ Figure out how to put actual tick boxes in posts

qq

7 Likes
[x] = Checked box
[_] = Empty box
[-] = Minus'd box
2 Likes

Thankies! [-][_]

2 Likes

[*]
Normal checked box (not greyed out)

Oh hey, instead of just making yet another random todo.txt file locally that I’ll probably forget about, I can put it here and be publicly accountable too. Awesome.

(All FE7 for now)

[-] Code/data analysis: figure out the structures in IRAM at 0x03000040 (mostly done), 0x030000c8 (done?) and 0x030000e8 (partly done but not really written out)
[x] Data analysis: figure out the data format for font glyphs
[_] Track down all fonts (found the main cutscene one)
[x] Code/data analysis: figure out the structure used to look up the glyph for a given character (I think I’ve got this)
[-] Code/data analysis: figure out how 2bpp font data is expanded into 4bpp VRAM bitmap data, and the corresponding code (found one such “renderer”, but there are probably more; also found “mapping” data used as lookup tables for the expansion)
[x] Code analysis: function at 0x8218 that loops over phrases of text and outputs the appropriate number of characters for this frame (taking into consideration text animation speed, whether A has been pressed etc.) and calls the appropriate bloop/tick sound effect (this function appears to be used for both “speech” and world-map text, but not for other event text)
[x] Code analysis: function at 0x85bc that outputs a single character of text, advancing however many bytes are necessary within the text data and handling the text codes (n.b.: text in captioned boxes uses something completely different that hasn’t been tracked down yet)
[-] Trace through all the functions called from this point and decipher it all (lots down, probably lots to go)
[-] “Document” all of this by writing equivalent C code
[x] Design a common, reusable scheme for specifying “parameters” on text codes (e.g. the portrait ID for LoadFace, character positions, etc.)

And then once all the analysis and design work is done, I can move on to some subset of the following (some parts more realistic than others):

[] Fix the existing, but buggy and unused codes for setting inverted/normal/blue/yellow/red text (it seems like the “toggle red” code was added later?)
[
] Make all those codes behave like the current “toggle red” does (i.e. set normal if the requested setting matches current)
[] Rewrite 8218/85bc (maybe more) routines to save space and make room for other hax
[
] Streamline the whole set of text codes and fix existing text data to match; make tools so this can be re-done easily if needed
[] Make a text editor that understands the new codes
[
] Implement the text code parameter scheme
[] Ability to change height of text boxes (it seems like allowing from 1 up to 4 should be straightforward)
[
] Editor for fonts that creates the appropriate glyphs etc. for insertion
[] Ability to use 16-colour fonts (bypassing the 2bpp->4bpp expansion entirely)
[
] Ability to animate the palette used for the font
[] Ability to set up custom 2bpp->4bpp expansions and activate them with text codes (would allow for different “colour schemes”, like fake boldface that relies on careful palette shenanigans)
[
] Procedural italicization of text
[] Streamline glyph lookup to support arbitrary text encodings (the current code basically has a special-case hax for shift-JIS, and otherwise assumes plain ASCII; it’d be nice to set it up for proper UTF-8 Unicode, although only very basic rendering would be possible, like precomposed characters only)
[
] Optimize glyph data storage (I have something in mind, but it might not be possible due to performance considerations)
[] Maybe a code to set “pitch” for speech (like in Immortal Sword)? Not sure if the way that sound is played will allow for this easily, might not be practical.
[
] Hell, I’d be open to suggestions if I really get all of that working.

1 Like

Did this divine lightning pierce the skies?

3 Likes

Ohh fonts are 2bpp no wonder they look so squished in gbage

Yup. Preview of documentation:

The data for each glyph is a 72-byte struct, with an 8-byte header and 64 bytes of bitmap data - 16x16 pixels (even if the character isn’t that wide) x 2 bits, oriented left-to-right, then top-to-bottom (so the first 4 bytes are the top row). The header is a pointer followed by four single-byte values: a “code page” number, the width of the glyph, and two more values (might not actually be used, or maybe I already figured them out and forgot them again). The pointer is used only for the shift-JIS encoding, to make a linked list of glyphs for a “group” of characters using the same second byte in the character encoding; the “code page” byte is compared against the first byte, and the linked list is searched until a match is found. (The code is set up to theoretically support multiple languages in the same build, even in the US English-only version.) Also there are tables that I’ll just call “font maps” that are basically just arrays of 256 pointers to glyph structs; for ASCII it’s a straight lookup, for shift-JIS it subtracts 0x40 first (because the second byte of a 2-byte shift-JIS sequence is at least 0x40) and then whatever glyph it finds from there is the start of the linked list. Basically, it’s complicated and ugly hax that I’d like to redesign (but there are higher priorities).

For an example glyph you can look at, there’s an exclamation mark encoded at 0xB89B40. Oh, and you know those 0x1f codes that seem not to do anything? They’re essentially just ordinary characters that have zero width (but if you have them in cutscene text, and you haven’t set text speed to max, they’ll still cause bloops to play). So there’s that.

Anyway, the game font really only uses 3 colours of the 4 that 2bpp makes available: ‘main’, ‘shadow’ and ‘background’. The way you’d set up fake boldface is to draw a font that uses all four colours (call them ‘dark’, ‘mid’, ‘light’ and ‘background’) and then set up two 2bpp->4bpp mappings: one that makes ‘dark’ and ‘mid’ go to one palette index and ‘light’ to another, and another that makes ‘mid’ go to the same palette index as ‘light’. (The “normal” speech bubble text setup uses indices 6 and 7, with background as 0; red text uses 14 and 15 with background as 0; world map text uses 14 and 15 with background as 4 - super weird shit!)

3 Likes