The answer is no, but you can make a good guess.
Tha't's right.
That is what I said in my first post of this thread. With a basic knowledge of how a cartridge works the answers is quite obvious.
But some people don't want to relent and keep beating around the bush.
search the code 32 00 xx for megaroms
32 00 40 is konami
32 00 60 is Ascii
32 00 40 Konami has bank 0 fixed. There is not mapper register at #4000. Only SCC+ allows that.
32 00 60 Can be Konami, ASCII8 or ASCII16
Also, "scanning" a ROM searching for mapper access can fail. Also, a human can be cheated (on porpouse or not).
I.e.: What type of ROM does this?
ld a,1 ld (#6000),a inc a ld (#8000),a inc a ld (#a000),a
It seems a Konami MegaROM. But it is Qbert (a 32K ROM without mapper)
Moreover, in some cases (i.e.: the example ROM I made) a human can't know how it really works.
So again, let's focus on the question and the beggining of this thread:
Can you get enough information from a ROM file to be 100% sure how it works?
No.
Can you guess it most of the times?
Yes, of course, that is what most/all ROM loaders do.
are you sure is not mine , i have 59 year old ans many work on MSX
ask to JAM
Ok ok... understood! We are talking about same ROM file.
Sorry but I have the impression to discuss with the deaf. And where have you seen that I want to limit everything to 2 "binary" situations?
What's a standard ROM?
Only the header and its location are standard. (with start addresses on used place or 0000h on unused address. The location is 4000h and/or 8000h)
About start address: We can not put anything as value because we are limited by the functioning of Slots and a few other constraints.
About size: There is no standard. When you make a virtual Rom, you have many possiblitity but to make a real Rom nowadays it's stupid to make a Rom of 12, 20, 24,..., 40, etc.
So again, let's focus on the question and the beggining of this thread:
Can you get enough information from a ROM file to be 100% sure how it works?
It's wrong.
So again, let's focus on the question and the beggining of this thread:
Can you get enough information from a ROM file to be 100% sure how it works?
It's wrong.
Thanks for finally admit it.
And where have you seen that I want to limit everything to 2 "binary" situations?
I think it's not about what you or any of us want to limit or not... it's just about the facts. As I said before, I have no knowledge about that matter... but after reading you all, my conclusions are:
-Is it possible to know how to load ANY rom only by looking at the rom: NO
-Is it possible to load MOST OF THE existing roms only by looking at the rom: YES
About size: There is no standard. When you make a virtual Rom, you have many possiblitity but to make a real Rom nowadays it's stupid to make a Rom of 12, 20, 24,..., 40, etc.
It has sense if you want to make a multirom including as much roms as possible (such as the AAMSX compilations)... so, the smaller they are, the better.
So again, let's focus on the question and the beggining of this thread:
Can you get enough information from a ROM file to be 100% sure how it works?
It's wrong.
Thanks for finally admit it.
No relationship, this is the question of the beggining that is different.
Here's the original question :
Hi all,
I was doing some tests this week-end with strange small ROMs (BASIC ROMs or ROMs starting below 4000h). Below is a list of those ROMs, sorted by starting address and followed by first 16 bytes dump, file size & name.
I was wondering what would be the best way to launch these ? Let me know if you have some experience on that.
The original question is not 'Is reading the header of a rom enough to successfully launch a rom ?"
No, the original question is " what would be the best way to launch a rom ?"
And in this question, the most important word is 'best', this word does not mean 'perfect'.
Here's the original question :
Hi all,
I was doing some tests this week-end with strange small ROMs (BASIC ROMs or ROMs starting below 4000h). Below is a list of those ROMs, sorted by starting address and followed by first 16 bytes dump, file size & name.
I was wondering what would be the best way to launch these ? Let me know if you have some experience on that.
The original question is not 'Is reading the header of a rom enough to successfully launch a rom ?"
No, the original question is " what would be the best way to launch a rom ?"
And in this question, the most important word is 'best', this word does not mean 'perfect'.
And my answer to his question is: (remember he is asking about mapped and not mapped ROMs)
A ROM file does not contain enough information to exactly know how it works (i.e.: where it is located)
Depending on how the ROM is connected to slot signals, it will be mirrored, located at page 1, at page 2, etc.
So to be 100% sure how to emulate/load a ROM you must know how /CSx, /SLTSL, /Ax, etc. are connected (and hardware in the cartridge, of course).
In most cases you can try to guess where to locate the ROM.
BIOS searchs for ROMs only at pages 1 and 2. If it finds a ROM header with a valid (non 0) start address, it makes a interslot call to that address.
ROMs that start with 00 00 ... are probably located at address #0000 and are bigger than 16K, so they have the ROM header at #4000. But they could also be located at #4000 with the header at #8000.
I would check the ROM size, then the first bytes searching for a valid ROM header. Depending on the result, I would search for the header at offset #4000 and/or #8000.
You must to figure out how the ROM must be loaded and launched, or create a database with that information.
But gdx disagree:
A ROM file does not contain enough information to exactly know how it works (i.e.: where it is located)
Depending on how the ROM is connected to slot signals, it will be mirrored, located at page 1, at page 2, etc.
A ROM file contains enough information if it is not mapped. The problem is that we must juggle slots, add mirrors and find a good method of execution. 100% is not possible on all media (RAM, MegaRam, Megaflash,...).
BIOS searchs for ROMs only at pages 1 and 2
No, the BIOS searchs in all banks of all slots.
So he afirms it is possible to be 100% sure.
I agree with Guillian in the sense that this remains a "guess", there's maybe some ways to produce a kind of malicious ROM that could be wrongly mapped, even if I'm sure that a good "guess" method like the GDX one works on all or almost all existing ROMs.
There is the distinction between theoretically correct detection and practically functional detection;in theory you do not have sufficient information to make the perfect decision (which is what Guillian is saying), in practice there are methods which work well enough for all the existing published software (which is what gdx is saying).
Is it possible to know how to load any rom by only looking at the rom file or not?
The answer is no, but you can make a good guess.
More examples: R-Type, custom mapper. How you know with only the ROM how works? You can't! Then the answer to Imanok question and perfectly answered by Grauw, and 10 times explained by Guillian is no, always no.
So Louthrax, Grauw, Ramones and me agree that it is not possible to be 100% sure, but it can be guessed most of the times.
GDX (anyone more?) afirms it is possible to be 100% sure how a ROM works only examining the header and size.
So read again the thread, try to understand, think a bit and then we will all agree.
This is a very bad summary. It lacks the context in your quotes and you distorts everything. It serves no purpose to continue.
And in this question, the most important word is 'best', this word does not mean 'perfect'.
You can't write a program that just load with the best option, because it's possible that ROM load fails. As coder I think you want always perfect method.