Wow, thanks for all the input and feedback, guys.
KungFuFurby wrote:
I have an idea to cut down on memory consumption caused by having duplicate copies of the sound driver. Simply have one copy of the sound driver in the ROM, then have copies of a series of three pointers (six bytes total) corresponding to your music that will be loaded at $208 in SPC700 RAM. When you switch banks, you'll only have six bytes plus the filesize of whatever music you're using to load. The code to load data is defined in a way that makes this real easy.
Very cool, this definitely sounds like it's worth a try, as does your idea with leaving samples in audio RAM, even if only to speed up song loading.
BTW KungFuFurby, do you happen to know how to add
panning information in SNESGSS? As it seems, the software ignores panning data in MIDI files for whatever reason. And I couldn't figure out how to do it when editing the song.
About the song crashing issue, I've been aware that all emulators (including higan-accuracy) tend to freeze after repeatedly loading any of the three songs, but I never encountered any issues on real hardware so far. Will have to look into the matter some more. As SNESGSS is very poorly documented, I had a hard time figuring out how to proceed when loading a (new) song at all.
Here's how I'm currently doing it – not sure if this is 100% correct (with an initialization of the SPC700 done earlier, of course):
Code:
LoadMusic02:
jsl music_stop
A16
lda.w #SCMD_LOAD
sta gss_command
stz gss_param
jsl spc_command_asm
A16
lda #:spc700_code_02
sta DP_SPC_DATA_BANK
lda #spc700_code_02+2
sta DP_SPC_DATA_OFFS
lda.l spc700_code_02
sta DP_SPC_DATA_SIZE
lda #$0200
sta DP_SPC_DATA_ADDR
jsl spc_load_data
A16
lda.w #SCMD_INITIALIZE
sta gss_command
stz gss_param
jsl spc_command_asm
A16
lda.w #SCMD_LOAD
sta gss_command
stz gss_param
jsl spc_command_asm
A16
lda #:music_02_data
sta DP_SPC_DATA_BANK
lda #music_02_data+2
sta DP_SPC_DATA_OFFS
lda.l music_02_data
sta DP_SPC_DATA_SIZE
lda.l spc700_code_02+14
sta DP_SPC_DATA_ADDR
jsl spc_load_data
A16
lda #$00FF
sta DP_SPC_VOL_FADESPD
lda #$007F
sta DP_SPC_VOL_CURRENT
jsl spc_global_volume
A16
lda.w #SCMD_MUSIC_PLAY
sta gss_command
stz gss_param
jsl spc_command_asm
A8
rts
tepples wrote:
I'm not entirely fond of the use of colored hires text because it can be hard to read on composite.
You're right, the red-colored font doesn't look great on real hardware, even when using RGB. The issue is especially apparent on non-1CHIP consoles. I'll experiment with the tone, maybe that'll be enough to improve readability.
tepples wrote:
DOMINIC isn't supposed to represent the hot glue sculptor we know as Drakon, is he?
Huh?
Even though I'm not quite sure I understand the question, the answer is probably no.
tepples wrote:
Does the FENNEC PUPPET become a FENNEC
REAL, um,
KIT later on?
tepples wrote:
What kind of cultural process produces names like Gregory Perpetuus Ebenezer Hrabanus Eindhoven Dubois Quaoar van der Muhlhausen Nido sulle Colline Jr.? A name that long might result from a patronymic chain, as seen formerly in Wales and among the gnomes of Dragonlance, but how else?
I can't find any spoiler tags, so I can't tell you here and now. (Look
here for my notes on playable characters, which – spoiler alert! – will answer your questions.
)
tepples wrote:
Some blinking dots in the H-IRQ test. It only happens on some resets though.
The fancy H-IRQ stuff is indeed a bit unstable. I've thought about scrapping it altogether, or patch up the area where flickering typically occurs with some sort of sprite-based window decoration. In any case, the final design of the main menu is yet another thing to work on.
tepples wrote:
Try drawing that map with interlace turned on. On "odd" frames, draw at distances halfway between the distance you're using for each scanline. This should reduce some of the shimmer in far areas.
Thanks! Will give that a shot once I find the time (and am done figuring out how to do smooth Mode 7 rotation, and a flexible way to zoom in and out).
tepples wrote:
For things that are suposed to stick out of the ground, such as that tower, try using software-shrunk sprites. I've posted a demo of this technique in the NES section.
Thanks, but pretty much all the graphics in the current build is placeholder artwork (in case of the Mode 7 map, it's ripped from Illusion of Gaia's intro). I envision the Mode 7 landscape to be drawn from a seemingly much higher distance, where no tall objects penetrate the atmosphere (think Secret of Mana).
tepples wrote:
When I saw the still of the sprite animation test, I imagined a 6- or 8-frame jog, but when I tried it, I got a typical RPG Maker 1232 walk. Would smoother walking be hard? I wonder if you could use Star Fox Adventures as a rough model for the angles and such.
What you see in the current build is my very first attempt of a sprite animation algorithm.
Indeed I plan to do a 6- or 8-frame animation at some point. VRAM space for sprites is very limited though, so I'll have to find a way to reload character data at will (maybe DMA the required section of the spritesheet into VRAM during Vblank whenever the player changes the walking direction or something …).
Another reason for the current 3-frame walking animation is that I couldn't find any usable Furry character spritesheet except for Gengen's, from Suikoden II.
(Star Fox Adventures? Isn't that a 3D game?
)
Espozo wrote:
Out of curiosity, do you know what emulators use? Also, how is it that you can have a PPU2 reversion 3 when, to my knowledge, there was never even a 2?
Yes, there was a version 2 PPU2.
Here are the currently known SNES chipset revisions (likely complete):
v1/1/1
v2/1/1
v2/1/2
v2/1/3
I have at least one console of each chipset revision in my possession, so …
Thanks again, y'all!
Ramsis