News:

The forum has been updated to SMF (2.1.3)!
Please be patient as we work to polish up the place and update features as we can.

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Triyence

#1
I have extracted all the voices from the game thanks to this thread. However, I have recorded a couple sample voices from the game NPCs and I'm not sure how the audio is being pieced together.

It looks like they are 4 clips of audio per voice type with 8 voice types. So, 32 voice sound clips (makes sense).

Does anyone have any information as to how the game actually will select voice clips and piece them together? It's doing something different from just putting random clips from a voice type group end to end.
#2
I've attached all the voices to this post.

@Lord Squirtle, any idea what voice numbers can be grouped together when it selects them?

Nevermind, the groupings are this (each consecutive set of 4):

256-259
260-263
264-267
268-271
272-275
276-279
280-283
284-287
#3
Quote from: Lord Squirtle on 09, June, 2014, 08:36:12 AMSound effects 256-287 appears to be NPC voices, and there are a bunch more as far as I can tell.

I was going through these, I can confirm that 256 (0x2000 0x3001 0x30FF) - 287 (0x2000 0x3020 0x30FF) are voices. They seem to be really short NPC voices though. Do you know where the longer ones are stored? Used in longer dialogs.

#4
Thanks, that makes sense.

Is there a flag that tells me if a tile is animated? I.e. a flag that indicates that this tile is a water tile and thus, animated?
#5
Thanks, that was indeed it. I used this to get an offset from the TileId that gets read:

(rom[pos[0] + 7 + l]) * 0x200

Values are either, 0, 512, or 1024.




Hopefully the last thing. Any idea why I'd be getting tiles like this around the edges?







The tiles are technically in no-mans land (not possible to view in game). However in gsmagic they get mapped to black tiles. I'm wondering where the discrepancy is coming from.

Edit: Oh yeah, another thing. How are transparent pixels dealt with? Seems like each tile would have a pixel color defined as transparent or something like that. I'm looking at where the code has blendflag and blendit usage, wondering if it's in there?

Looks like it's always the first color in the palette gets treated as transparent. Please correct me if I'm wrong.
#6
How do I get the char base for a given layer? What part of the code is doing that?

Essentially this:



Which must be telling me where to index into the tileset to pull the tiles.
#7
I have a fair amount of knowledge of git. It definitely is something needed for true open source dev. Makes things like this much easier.

I made it so the layer buttons work, and I also added a button that copies the tile data that I needed to the clipboard. I have no idea who is tracking versions but if you want this here you go.

Quick screenshot:



Clicking the 'Copy Tile Info To Clipboard' button would give you this:

╔═════════╦════════╦═══════════╦═══════╦═══════╦═══════╦═══════╗
║ LayerId ║ TileId ║ PaletteId ║ TileX ║ TileY ║ VFlip ║ HFlip ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 772    ║ 0         ║ 0     ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 773    ║ 0         ║ 8     ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 804    ║ 0         ║ 0     ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 805    ║ 0         ║ 8     ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 774    ║ 0         ║ 16    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 775    ║ 0         ║ 24    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 806    ║ 0         ║ 16    ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 807    ║ 0         ║ 24    ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 772    ║ 0         ║ 32    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 773    ║ 0         ║ 40    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 804    ║ 0         ║ 32    ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 805    ║ 0         ║ 40    ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 774    ║ 0         ║ 48    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 775    ║ 0         ║ 56    ║ 0     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ 3       ║ 806    ║ 0         ║ 48    ║ 8     ║ FALSE ║ FALSE ║
╠═════════╬════════╬═══════════╬═══════╬═══════╬═══════╬═══════╣
║ ...       ║ ...      ║ ...         ║ ...     ║ ...     ║ ...     ║ ...     ║
╚═════════╩════════╩═══════════╩═══════╩═══════╩═══════╩═══════╝
#8
Has anyone created a GitHub repo for this?
#9
Thanks Fox. That source code is indeed useful. If I wanted to find the spot in your code that is retrieving the palette, tile id and flags for a given tile, where would I find that? The code is quite hard to read with all the magic numbers. Looks like it might be in decompTileData?

Also noticed that there is no separation of the map layers, do certain ranges in the stiles correspond to certain layers?

Edit

Playing around with the stiles variables but I'm not seeing where you correlate a read tile to given position on the map. I.e. where do you figure out that the tile at 0,2 in map 4 should be tile Id 774, palette 0?

Here are the first few tileids of stiles for map 4:

0772 0773 0804 0805 0774 0775 0806 0807 0902
0903 0934 0935 0900 0901 0932 0933 0705 0773
0737 0805 0705 0835 0737 0867 0836 0837 0868
0869 0838 0839 0870 0871 0836 0839 0868 0871
0840 0714 0872 0746 0000 0000 0000 0000 0000
0000 0000 0130 0376 0377 0408 0409 0378 0379
0410 0411 1024 0000 1024 0000 0000 0000 0000
0258 0000 0000 0259 0000 0512 0545 0545 0512
0513 0513 0545 0545 0512 0513 0512 0545 0609
0608 0513 0512 0545 0545 0577 0577 0512 0545
0576 0577 0609 0513 0513 0545 0513 0512 0545
0512 0513 0609 0545 0513 0608 0545 0512 0577
0545 0512 0577 0576 0545 0609 0577 0513 0512
0545 0512 0577 0608 0609 0512 0513 0545 0545
0577 0513 0545 0608 0577 0512 0609 0545 0513
0577 0545 0512 0513 0545 0545 0513 0512 0545


Looks like it defines them as 16x16?

0772 0773
0804 0805
#10
I want to be able to separately construct a map from the game file in a similar manner to how the editor does it. Does anyone know how this can be done? I guess the main things I need to know are:


  • Where is the map data stored in the .gba file?
  • What are the details on any compression algorithms that store it?
  • Once decompressed, is it similar to how the memory viewer in VBA works? Essentially just tile pointers?


Or maybe someone can help with how I can get, for a given map, starting at tile 0,0, the palette, tileid, and flips for each tile (on each layer). For example if I'm looking at a 32x32 tile map, I want all this information (palette, tileid, flips) for each layer of the map.

When a map is loaded in VBA, does the entire map tile data get put somewhere in memory?
#11
I have a tool that I made to extract the animation frames of a given battle effect. It then creates the entire animation as a huge texture.

Here is a link to Ragnarok (warning the texture is 1920x2040)
Here is a link to Storm Ray (warning the texture is 1920x1560)

So my question is, does Golden Sun actually handle battle effects dynamically to reduce memory size? The linked images are ~300KB so after a few effects the size total would get quite large.
#12
Do we know how many days/months/years elapsed from leaving Vale to lighting the Mars tower?
#13
Are you guys saying that every pixel for every tile is actually just a pointer to an offset within a palette? And depending on the palette that is being set it determines what color is returned? If so, holy crap.
#14
For example, a town can have a few different color doors, like: brown, red, green.



How does Golden Sun store the data for a door that allows it to shift between colors?
How does the palette shift work?
#15
Perfect, thanks guys.
#16
Anyone know of some fonts that look very similar to the Golden Sun banner font?

#17
That is very interesting because I think it goes against what Atrius said about the collision system where it tries to deflect at +22.5°, -22.5°, +45°, -45°. If the characters 8px radius circle is directly underneath that tile according to those angles it shouldn't be possible to glance, but in the game it does.
#18
Ah ha! I figured my assumption was wrong. I'm guessing that when it's a pillar type it uses NPC style collision detection. Meaning that it uses a circle with probably a radius of 8 there. You can actually see it if you attempt to go in between the objects.

Thanks for finding that out.
#19
Hey Fox, this is an odd request but can you tell me everything you know about the collision data for the highlighted tile (the pot):



I have been assuming that it was just a 16x16 collision tile with a single height map value of 16.
#20
Interesting finds Fox. Any ideas on how the game is changing those heightmap indexes? I'm thinking there could be a couple possible ways:


  • Height map index is determined by your z-coordinate
  • Height map index is determined by specific tiles

Any thoughts?