Splitting the files isn't nearly enough. It's the mapping info you need.Well, regarding iNES, I think the problem is that with NES games you can't do away with headers because there are multiple ROMs in the cartridge
What kind of mapping chips are in there? (74LS chips? MMC-1?) How are the pins wired up? (mirroring? VRC-4 pinout?)
With iNES, the mapper #s are arbitrary enough (sometimes one mapper describes 2+ board types; sometimes the same board type has 3+ mapper IDs) that you basically have a database of boards already. May as well drop the rest, go for a 16-bit ID, and describe every variation at that point.
Basically yeah. A ZIP file to me is just a compressed folder.or you could take the MAME or ZOMG approach and make a ZIP file with multiple files inside, with the filename telling what each file is meant to contain
The problem with the MAME approach is that the filenames don't describe intent, they describe what was written on the IC. Useful for the three people on the planet replacing bad ROM chips on NES/SNES carts, not useful for anyone else.
Here is Contra 3 for the NSS:
contra3.ic2
contra3.ic3
contra3.ic8
dsp1data.bin
nss-ic14.02
nss-c.dat
spc700.rom
How do you make a standard SFC ROM that plays on most emulators? Why you combine contra3.ic3 + contra3.ic2 in that order, of course.
Why is the DSP-1 data ROM and SPC700 IPLROM included in the ZIP, despite neither being present on this board? Good question!
The idea of a ZIP file representing a game folder is a good one. Then the emulator can extract it and use it. Once extracted to a folder, you can easily store save RAM files without rebuilding the ZIP file all the time, and without damaging the archival, pristine ZIP archive.
I just don't like MAME's handling. The ZIP includes irrelevant files, awful file names, and no mapping information. The mapping is embedded in the emulator in their own proprietary format under a non-GPL compatible license.
Yeah, I was following Haze's progress on that. SFC has a few too, but thankfully not as many. Genesis was easier to program for.Also this discussion reminds me about when once on IRC we were discussing about Chinese bootleg Mega Drive games and how every one of them seem to include copy protection.
Personally, the way I'd handle that would be to include patch files that hack out the protections. But that's just me
Yeah, opcode mnemonics only. And even then, you'd have a really hard time doing something like the full amd64 instruction set.But how far can it reach? Because some things get really tricky.
The cool thing is you can use the assembler's macro system to inject new opcodes into the table, so you can build your table using recursive functional programming.
http://byuu.org/files/bass_v08r01.tar.xzThough even then it may be still useful, where is this tool? Maybe I could just go make a table and use that.
Exactly the comparison I use =)In fact, this concept of an application bundle is so good that Apple uses it for applications on Mac OS X.
That's why I made kaijuu =)The problem then becomes one of how to change the default intent when such a folder is double-clicked to "Open this game in an emulator" instead of "Open this folder in the file manager".
[with huge help from OV2, he wrote the initial app, then extended it greatly with icon support]
http://byuu.org/programming/kaijuu/
Works on Windows XP - Windows 8, 32-bit and 64-bit.
Once installed, you can double-click to play a folder that matches your filter (eg *.sfc) in bsnes/higan.
You can still right-click and explore the folder contents. Or you can reverse that, double-click to browse, right-click to play.
It also does many other cool things. You can set a rule to open Makefile in a text editor (Windows can't assign it because it has no extension), and right-click to run make all, make clean, etc. You can associate .htaccess files as well.
The argument passing is really advanced: you can pass in a filename, a folder name, the extension, multiple files and/or folders, etc.
Exactly! Once extracted, the core no longer has to deal with recompressing the save files, save states, etc.WSZ (Winamp skins), SMZIP (StepMania songs), JAR (Java applications), and APK (Android applications) also use the pattern of a bunch of files in a Zip archive. And when unzipped into a new folder, this becomes byuu's application bundle concept.
ZIP is the conduit to get the folder out there, since web browsers lack the ability to download folders. And it's also good for archival.
Yes, but it gains a substantially more powerful processor that can be targeted with C compilers easily, and it has hardware sprite rotation.The Game Boy Advance, for example, is wonderfully more orthogonal than the Super NES, even though it is missing priority per tile, subtractive blending, and hardware audio resampling and mixing.
It's really hard to draw a clear winner, but I still like SNES more. It felt like more love went into the games. GBA games always felt like half-assed ports and quick money grabs to me. Only a few real gems there. It had a much better homebrew scene though.
Yeah. The idea is we try and drive all commercial software with a database, so that they're immune to future changes in the markup format, and so that existing games can work without people having to redownload them.These issues apply to the SNES version of this too. Sik raised the objection that this wouldn't work on the NES because of multiple ROMs, and my point was that multiple merged ROMs in the file don't make it any less feasible for the NES than for the SNES. The same problems occur as on the SNES, with cartridges outside the commercially-released set from the console's life needing additional files with mapper information.
Homebrew/ROM hacks/translations will continue to be produced, and we can't grow our database forever. Plus I really don't want to add games like SM Choukyoushi (lolicon rape dungeon "game" ... I wish I was making that up) to my database ...
Of course, what we really need is a finalized board format with 100% of commercial games working on it.
I think I have it now, finally, after half a decade of trying. But yeah, the last thing I want to do is say it's all done and finalized, then end up unhappy with a missing feature or a flaw in the markup syntax :/
But we can't strongly push ZIP { game file + board file } without the board file being finalized.
I agree in principle. If we could perfect a board format, and get it to be universal across emulators, that would be fantastic.Besides we're talking about keeping track of a database the emulator has no reason to know about - it should be part of the dump itself, not the emulator.
I just don't know how we can do that. Nobody ever agrees on markup board formats. I have lots of reservations over Marty's markup in Nestopia, for instance. Many people probably dislike mine.
Nobody's interested in board formats, and anytime I do things entirely myself, people seem especially opposed to it.
But yeah, I do have five years of experience working with SNES board layouts. So I am kind of the foremost expert there
Yes, mostly. You do end up with a half-dozen really nasty hacks, but it's possible.As for NES vs. SNES, with the latter you can still make a game that's just the ROM and that's it
See: http://gitorious.org/bsnes/bsnes/blobs/ ... amicom.hpp
Agreed.with the former you have no option even for the simplest games, so the concept of raw binaries can't be used at all in that case regardless of situation.
Tilemap mirroring is part of the board wiring. Belongs in a board layout description, along with ROM/RAM size, mapper chips present, mapper chip wiring, etc.EDIT: which reminds me, NES dumps not only are two ROMs, but also the direction in which the tilemap is mirrored. Fun stuff.