I'm not sure if this has been mentioned, but wouldn't it be possible at some point to have the fast NOR memory, with a micro-sd card, you boot it and copy a game to the NOR, then reset and flick a switch so it reads from the NOR and thinks it's a real game?
So your 1.1 header comparison just checks the header that is in memory, correct? (I know reset did not change the header in memory in my tests, which had essentially the homebrew's header in it).sure, your testing was correct.
if you try reading the header directly after your homebrew starts you will get KEY2 mangled data that changes every time.
You have to reset the card to be able to read the header.
but if you reset the slot-1 flash card you would be reading the header of the slot-1 firmware not of your app
hi cory.sure, your testing was correct.
if you try reading the header directly after your homebrew starts you will get KEY2 mangled data that changes every time.
You have to reset the card to be able to read the header.
but if you reset the slot-1 flash card you would be reading the header of the slot-1 firmware not of your app
So your 1.1 header comparison just checks the header that is in memory, correct? (I know reset did not change the header in memory in my tests, which had essentially the homebrew's header in it).
You still don't catch my point though. At least with EZ5, they have to do something special to allow uncorrupted data to be accessed from the TF card after booting homebrew, if the gamecode is not correct than I am assuming all data coming from the EZ5 will be corrupted.
Some 1.1 results:
header patched? / ID / no-patch play / test data
From EZ4 (renamed to .bin for EZ4 to use PSRAM to load)
EZ5: no /00A0FFFF/ NO / FFFFFFFF FFFFFFFF
MK4-Mini: no / EEB7E4ED / NO / 3FB82405 FA6BE515
DSLink: no / 2E0000EA / NO / FFFFFFFF FFFFFFFF
Madden 2005: no / 3C21CCE8 / NO / E621FDA1 E01B3C6F
these results were identical when run from a different flashcart than EZ4, ds.gba version and .nds version both booted without a problem.
Run from:
EZ5: yes / none / YES / 020275D58 00000000 (successive runs returned same test data)
DSLink: yes / 0068FFFF / NO / FFFFFFFF FFFFFFFF
Not sure why the results are so different from the previous one's, nor why the EZ has no patch play... perhaps it goes back to the thing I was talking about with the header? Here, I'll patch the homebrew to have gamecode PASS like EZ5 expects for homebrew and see what happens when I run it again...
EZ5: yes / none / NO / E2011102 E0900FA3 (successive runs returned same test data)
I hope I illustrated my point there... EZ5 uses a special gamecode to detect homebrew which would use the FAT lib, and returned different results, including a NO for no-patch play. EZ5 uses a simple (and incorrect in my opinion) method of detecting homebrew... most likely the other cards use a method similar to ndstool's check for multiboot/homebrew/commercial.
aka: if it's built like a homebrew ROM breaking many of the rules of commercial ROM's, and has homebrew identifiers in the header, the cards are going to treat it differently unless they are extremely unintelligent in their detection method. It's either that... or you made an error in the program update?
edit:/ what is the correct test data supposed to be anyway?
be careful what you say about technically impossible!Uhmm, read my post a little more carefully - I tested from an EZ4 against real carts that were not used as the bootup medium. What you are asking is technically impossible though, since we don't have any method to make a real DS cart with this app on it to confirm it's operation is 100% correct.
It is technically impossible to make this program onto a REAL game card; at least, not without the help of Nintendo. Both solutions you have available, while interesting, would not produce a REAL game card, only plausibly good fake onesbe careful what you say about technically impossible!
first during card initial start the on-board firmware is started in clean rom mode, so placing ROMtester in place of slot-1 boot firmware would yield in YES result.
second I do have card(s) where I can place ROMtester to be boot-firmware, and I can also make slot-1 clean emulator (it would not fit the slot-1 though at the moment)
I'd still like to know, does the header compare with what is in the DS memory (secure area/header copied to memory) or... ? I'm only trying to understand if there is a possibility of false YES/NO. Also, was there a change to romID? It worked fine in 1.0 from EZ4...
be careful what you say about technically impossible!
first during card initial start the on-board firmware is started in clean rom mode, so placing ROMtester in place of slot-1 boot firmware would yield in YES result.
second I do have card(s) where I can place ROMtester to be boot-firmware, and I can also make slot-1 clean emulator (it would not fit the slot-1 though at the moment)
It is technically impossible to make this program onto a REAL game card; at least, not without the help of Nintendo. Both solutions you have available, while interesting, would not produce a REAL game card, only plausibly good fake onesIt is a technicality.
Is it possible their loading method does not require the entire game header to be replaced in memory (thus only appearing patched)?The header patch only checks the header copy in RAM, to my knowledge there is no real reason why it should be pathced, but at least 2 slot-1 devices seem to patch the header area as well.
The header patch only checks the header copy in RAM, to my knowledge there is no real reason why it should be pathced, but at least 2 slot-1 devices seem to patch the header area as well.
Is it possible their loading method does not require the entire game header to be replaced in memory (thus only appearing patched)?
Version 1.2 now available - sorry it was online and then it wasnt as the server admin tool trashed the domain root for me as firendly service.
http://nds.truedream.org
http://nds.truedream.org/ROMTester_1_2.nds
Version 1.2 now available - sorry it was online and then it wasnt as the server admin tool trashed the domain root for me as firendly service.
http://nds.truedream.org
http://nds.truedream.org/ROMTester_1_2.nds
Ok, here are my results using version 1.2:
UFP512: 2118000 - 362E - Yes - 65722072 6E727574
AceKard: reported as Emulator !
NinjaDS Sticky: 21406000 - Patched Header 1FEF - 362E - No - E3A05301 E1A01421
DSLink: unknown ROM ID - Patched Header AFA4 - 362E - No - FFFFFFFF FFFFFFFF
DSOne: 27180000 - Patch Header 1427 - 362E - No - D0044213 42A66803
EZV: 21587F00 - Patched Header B671 - 362E - Yes - 65722072 6E727574
X9: no able to start ! randomly hung or boot Slot 2 !
R4DS: 21586000 - 362E - No - 46C04718 46C0B5F8
DSX: unknown ROM ID - Patched Header 6B85 - 362E - No - AC45FE39 F5B2ADF5
Ralf
no, the 1MByte is not sufficient. Any ROM loaded may immediatly request and block for reads anywhere in the ROM space, and the slot-1 device has about 4 microseconds to deliver that sector. unless the NDS slot-1 hw latency setting has changed, in which case (it this is possible) there is more time to respond (but still not enough time to fetch sector from SD card).Would 1MB be enough data to deal with the random commands you mention in commercial ROM's? It would explain the long initialize time before a game loads... if the data had to be copied to 2 places instead of just into memory. (AFAIK the 8Mbit SRAM is used strictly for saver data)
EZ5's kernel itself runs like homebrew and accesses the SD card. Unfortunately they ripped the code from the source that calls "cleanROM mode" and it will not launch .nds files at all (though it probably wouldn't be that tough to isolate with a compare between the source kernel and the official kernel).
I'm assuming in homebrew mode, all the commands do something different than in clean ROM or hybrid mode... could be wrong on that though.
emulator check is
1) check if writeable memory in GBA slot
2) initial values of slot hardware ownership (only good in no$gba, wrong in others) - its not so accurate, and it seems I am not masking the bits correctly, still it should be standard setting if roms are normally started (eg slot hw ownership is ARM7 by defualt)
the UFP seems interesting - the flags setting is 0 init latency, and NO KEY2 encryption. same with DSOne, no KEY2 encryption.
I will have some more advanced tool soon ready..
emulator check is
1) check if writeable memory in GBA slot
2) initial values of slot hardware ownership (only good in no$gba, wrong in others) - its not so accurate, and it seems I am not masking the bits correctly, still it should be standard setting if roms are normally started (eg slot hw ownership is ARM7 by defualt)
the UFP seems interesting - the flags setting is 0 init latency, and NO KEY2 encryption. same with DSOne, no KEY2 encryption.
I will have some more advanced tool soon ready..
Oh, sorry
Every test ( exception is UFP512 ) was done using an original NDS Lite ( UEH1134xxxx ) with an EZFlash IV Lite Deluxe inside Slot-2.
I'll remove it on further tests.
The UFP512 is NOT available to run in my new NDSL ( but still runs using my older orginal Lite ( UEF1099xxxx ) or my Phat ) so the test was run on both older devices.
The initial flags are: 21180000 not 2118000.
AceKard without Slot 2 Card:
BAD EXMEMCNT initval. Emulator ?
initial Flags: 29406300
ARM9 CRC: 362E
Either emulator or Slot-2,
results likely meaningless!
Clean ROM no-patch play: YES
Test data: 65722072 6E727574
Ralf
things are getting eve more interesting
sure all cases during test slot-2 should be EMPTY, the test doesnt stop but can issue warning.
the emu test that is incorrect on acekard, well am checking for the CR_WAIT register to have known standard value
(not masking off the slot ownership bits) so it may be less accurate, but again the slot-1 device has no reasons to
leave this register in non-default state before running the loaded ROM.
question, why doesnt the UFP run on new NDSL? its a slot-1 flash card so should work? (or you meant you are unable to test)
haa acekard seems to the ony one that uses slower slot-1 clock rate
I will work on update tonight