So I'm starting to get into SNESDev, and I was just wondering, what emulator should I use? I'd like to be able to view the pallete like you do in most NES emulators. I'd actually like an emulator that's pretty much like FCEUXD, but for SNES. What I have now is Geiger's Snes9x debugger for Windows, but I don't know if this is the best thing. When I go to dump the pallete, it shows me some hex values that make no sense to me. What is a good emulator to use for SNESDev?
Altrough I've done only very very minor SNESdev until now, I guess the SNES9x debug version is the way to go, there is also a VERY cool programm called BGMapper that allows you to see everything beyond a ZST savestate, so to view you palette, nametables, pattern tables, etc... you should go under ZSNES, take a save state and use BGMapper to view it. This doesn't allow you to view it in real time, but it's better than nothing, eh. SNES 9x can also read ZSNES savestates, but cannot write them back as far I know.
I use the SNES9X debug version
Yeah, BGMapper would be really cool if it worked. Everytime I type in BGMapper (FileName), it says "Cannot load file". I tried typing in the whole directory, I tried changing the screen mode and it still didn't work. I just have a save state from ZSNES in the same folder as the editor, and I cannot get anything to happen. I just wish it would specify what it means by "Cannot Load File". I wish it would tell me if there is no such file, or if it can't recognize the filetype rather than the annoying "Cannot Load File". Is it not compatible with Save State files from different versions of ZSNES?
EDIT: Nevermind. I was able to drag the save state onto the program icon to get it started.
I guess BGMapper only allows regular 8.3 DOS filenames to be loaded. This sucks a bit.
The program is actually pretty handy. I'd rather just have an emulator like FCEUXD to view the pallet instead of having to do it all with that program. How come more people aren't involved in SNESDev? It seems kind of dead, which is too bad, because SNES is awesome.
I like NESdev over SNESdev because:
- SNES has a lot more things to learn.
- It's hard to have hope that any game you make will stack up against the better retail titles on the SNES.
- Design challenges on the NES aren't really challenges on the SNES.
- When you push the NES to do an average or even good 16-bit looking game, it's pretty impressive.
That said, I still constantly think about moving over to SNESdev for it's benefits like layers, 4bpp tiles, big memory built in, better music system, expansion processors etc.
Yes, you both are right. SNES dev is kind of dead, maybe not totally dead but sure not as alive as NESdev. On the other hand, it's sure much harder to get a SNES game looking good with title such as Chrono Trigger or Stat Ocean out as compared with the NES where the best titles are impressive, but not THAT much impressive anymore. I don't see the point in doing SNESdev if you make NES looking games on the SNES.
However, the GBAdev communauty is sure alive and the GBA has similar capabilities than those of the SNES.
I would consider doing GBADev, but I really like the SNES a lot more for some reason. I hate the sound quality of GBA. When I play SNES ports on the GBA, I just think the sound was so much better on the SNES. I own Final Fantasy V on GBA and on SFC. The SFC version's sound was a lot more clear, and I enjoyed playing it more on the console. I don't know, I just am attracted to the SNES for some reason. I really do like NESDev, because it's not nearly as complicated as SNESDev, and I don't feel like I need a team of 30 developers to do everything for me so I can get something done in under 3 years.
Graphically speaking, the SNES is great compared to the NES. Making a game look good isn't that hard if you have your good old buddy the scanner. I even use it for some things in my NES games, such as the portrait for a character. I painted it, scanned it, and Nintendoized it. I don't think I would have had the patience to make that portrait in a graphics editor such as YY-CHR. So yeah, a scanner is the way to go for me.
Celius wrote:
How come more people aren't involved in SNESDev?
As Bregalad pointed out, gbadev.org has drawn away a lot of people who might otherwise have tried developing for Super NES.
- The standard syntax for SPC700 assembly language is alien to people used to 6502/65C02/Hu6280/65C816 syntax. This is unfortunate because the rest of the SPC700 is so much like a 6502-family CPU.
- GBA has a faster CPU that can be programmed in C++.
- GBA copiers are easier to find than SNES copiers.
Celius wrote:
I hate the sound quality of GBA.
Have you tried
Luminesweeper yet?
Quote:
When I play SNES ports on the GBA, I just think the sound was so much better on the SNES.
Are you using the same speakers/headphones between the two, or are you using your TV's speakers for SNES and the GBA's built-in speaker for GBA? It makes a difference; the only change at 0:11 of
this recording is that I turn off the high-pass filter simulating the GBA speaker's transfer function.
It's surprising to hear that you get decent using porting a SCANNED image to 2BP, but if you can, by all means use this !
I couldn't agree more, the sound of FF5 advance is absolutely terrible. The sound of some other games ported from SNES to GBA sounds allright such as Breath of Fire or Donkey Kong Country but still, no GBA game's sound is even close to their SNES counterpart. (EDIT : And yes, I almost always use external speakers on the GBA so I can get decnet bass).
Well, if you'd like to see how well the conversion went, you can view these images. I think the conversion went well. I don't really know if I like the original picture. I think the Nintendoized one is a lot better. The first one is a portion of the original. The second one is the same portion nintendoized.
http://www.freewebs.com/the_bott/Painting.JPG
http://www.freewebs.com/the_bott/NESPaint.JPG
But yeah, I think drawing by hand is the way to go, because doing digital art can be really annoying. Especially with big things.
That pic is excellent, Celius.
kyuusaku wrote:
I like NESdev over SNESdev because:
- SNES has a lot more things to learn.
- It's hard to have hope that any game you make will stack up against the better retail titles on the SNES.
- Design challenges on the NES aren't really challenges on the SNES.
- When you push the NES to do an average or even good 16-bit looking game, it's pretty impressive.
I know what you mean. Hell, even initializing the SNES is a quite a big hurdle.. I ended up ripping off init code from a demo. Sure it's a nice system (NES games, written carefully, would port very easily to it), but by the time I was done battling with all the VRAM configuration registers, uploading a program to the SPC, and all that, I was growing increasingly ready to get back to the simplicity of the NES..
As far as what emulators to use, I had trouble with both ZSNES and SNES9X.. didn't try any others at the time. Once a program works on a real system, then using those emus is OK for testing (besides for the bigger changes).
Memblers wrote:
That pic is excellent, Celius.
Thanks
. I think the only reason that it doesn't look really bad is because the portrait is HUGE when displayed with the NES (96 pixels tall, 64 pixels wide). But if I were to draw a large picture of an enemy that's only 2x4 tiles big, it wouldn't work so well. I'd have to draw the enemy small before scanning it.
One thing that makes me want to do SNESDev more than GBADev is that I know the 6502, and there isn't that much more to learn for the 65816. I would like to learn stuff for GBADev, it's just that I don't know C++. I have C and C++ for dummies, and there are still things that just do not make sense to me. The whole int main() thing just does not click. When I type that in to make a sample program, I don't know what exactly I'm saying in that line. I'd like to find out, so maybe I'll pick it up again.
Well, I've finally got the pallete data and the CHR data loaded in my SNES Test ROM, I just need to load the background with some actual tile data. That BGMapper is pretty handy. But yes, the setup of SNES games is really annoying. I will have to look over what exactly it was that I copied/pasted for the initiation process
.
Celius wrote:
I think the only reason that it doesn't look really bad is because the portrait is HUGE when displayed with the NES (96 pixels tall, 64 pixels wide).
That's part of why NES games such as
Ninja Gaiden and the underrated
Vice Project Doom pioneered the use of cut scenes: so that they could show more detailed characters.
Quote:
But if I were to draw a large picture of an enemy that's only 2x4 tiles big, it wouldn't work so well. I'd have to draw the enemy small before scanning it.
That or use *shop to shrink it between scanning and converting.
Quote:
One thing that makes me want to do SNESDev more than GBADev is that I know the 6502, and there isn't that much more to learn for the 65816.
The ARM architecture was designed as pretty much a 32-bit load-store successor to the 6502, and the assembly syntax shows it.
Quote:
I would like to learn stuff for GBADev, it's just that I don't know C++. I have C and C++ for dummies, and there are still things that just do not make sense to me. The whole int main() thing just does not click. When I type that in to make a sample program, I don't know what exactly I'm saying in that line.
A C program is a set of subroutines, the kind you call with JSR in 6502. The "int main()" tells where a subroutine starts; "int" means that it leaves an 'int' (whole number) in the accumulator for the calling subroutine to pick up. When you do this:
Code:
int main() {
puts("hello world");
return 0;
}
It compiles to something like this:
Code:
.proc main
.segment "CODE"
; puts("hello world");
lda #<helloStr
sta 0
lda #>helloStr
sta 1
jsr puts
; return 0;
lda #0
rts
.segment "RODATA"
helloStr: .asciiz "hello world"
.endproc
It's called "main" because every executable compiled with C contains a bit of reset code that does "JSR main".
I'm sorry, the explanation of the "Int" leaves me still confused. What do you mean by "the calling subroutine"? I just don't see why "Int" needs to be there. That's short for integer, right?
And about the picture. I could shrink it in photoshop, it's just that it would turn out distorted, and may not even look like what I drew in the first place. I think drawing it small to start out would be better. When I first shrunk my painting, I could barely tell what I was looking at. I of course had to trace over the whole thing again.
Oh, my Celius it's amazing how you're able to Nintendoize images ! I couldn't do it look that good. I've nintendoized some portrait as well, always ending with mediocre results. The best way I found is to do it in black and white, and do the colors by hand. Did you did this ?
And yes, as for small enemies and so it's always beter to do them by hand. You'd want to draw them before to know what you're doing, but still draw the pixels by hand. I may be wrong tough.
And why would a reset code return something ? Since nobody ever calls the rest code (aka main procedure). I trought a main procedure would always be void type and never have any argument, else it really make no sense.
Some posts have been split off into a new topic:
How do I shot C?