Well, I just had to make a new games collection for my trusty old dtv-inside-a-mini-keyboard, and after trying to flash it, I'm now in serious trouble.
My dtv is powered on and is running the Flash Utility, but due to trying to flash an image including kernal, I'm pretty sure that powering off will result in bricking the device.
I don't seem to be able to flash the image correctly. First time I tried, I ended up having a prog error at 00F782, and I couldn't get past it. Since then, I have tried several things - changing single bytes (for testing) etc, and I seem to be getting into more and more trouble.
I have made the flash image with dtvmkfs.exe (including kernel using -k option), tested it with WinVice, then made the same flash image in two parts using the -2 option of dtvmkfs.
Anyone able to help? I have tried loading the data into the Flash utility using raw=y and raw=n, no difference (which one is correct?). Even a step-by-step guide to flashing with my setup could help, as I might be doing something wrong here.
I'd really hate to brick the thing, although I know there might be no way to save it if the actual flash chip is defective (has been flashed maybe 10 times, type AT4XBV16X).
My setup: 64HDD (USB stick for storage) -> XE1541 cable -> DTV
Yikes! First things first: DO NOT RESET OR POWER OFF!
If the chip is the AT49 variety (seems like it is, due to the missing T at the end), you might have been bitten by the bug mentioned here.
Try the "show map of flash" function; if there's still something in the first column, try dumping the range $000000-$010000 to a buffer and saving it to the disk (I hope 64HDD supports saving), starting x64dtv and flashing the dump to the same range in there; if the image still works, it should be safe to reset the DTV (but please don't do so yet).
Changing single bytes (& other such actions) may have made the problem more difficult...
I remade the flash image files, first tested in WinVice, then made the same file in two parts. Right now the DTV is loading the new t000000.bin file, specified as raw data. I'll get back at this after loading (yes, it's the lovely 30-minute wait, loading 1 MB at 1541 speed...)
If this problem is due to the bug, then you would need a newer Flash program to (easily) flash what you want. Since exiting the Flash program you're currently running is out of the question, there are two possibilities to fix the situation:
1. Save the $00xxxx area to disk and verify that it works in x64dtv. If it does, it should be safe to reset and load a fixed Flash program.
2. Erase the sectors 0-7 by erasing range $000000-$080000 and then flash (only) the area $000000-$010000 from the image file.
Both options are risky...
The plan is to have the kernal working, then reset and flash the games separately (by making a new 2 part image without the kernal area).
3. First erase the whole chip with the "erase sector" & "inc/dev" sector functions, check with the "show map of flash" that the flash is really empty and then program the whole flash from the t000000.bin & t100000.bin images.
Well, I couldn't take it anymore... I saved the kernal area to a 1541 disk, then copied it to the usb stick, then tried to put the file into a d64 using DirMaster... Well, when THAT failed, I decided to take the "what the h***" approach... I looked at the flash map, and still, after many attempts of erasing, programming and again erasing, the map still showed data in similar locations as Kahlin's screenshot of the program... I hadn't changed many bytes, I think I succeeded in changing byte 004444 which isn't in the kernal area (this change showed on the map) - so I thought, there's something still lurking in the kernal area, I'll just f-king reset and see what happens.
And you know what - the thing still boots to the basic prompt! So it seems to be alive! I just realized an hour ago, that dtvmkfs can make files without the kernel, 010000-0FFFFF and 100000-1fffff, so that's what I'll do from now on.
No more messing with the kernal area for me. Seems I was really lucky not to have bricked my dtv!
Thanks for your help, Nojoopa (even if I just decided to go gung-ho)!
Glad to know it's not bricked, but DO NOT try to flash the games with that version of the flash program! It CAN brick your DTV if it tries to erase and flash the range $04xxxx - $08xxxx (or thereabouts). I'll try to find a link to the fixed Flash program, will edit this post when I do find it...
EDIT: Flash-1.0.zip from the wiki seems to be the fixed version. Please report if it still fails at any point.
EDIT 2: (striking out some misinformation) Oops, I remembered the sector erasing method incorrectly (thanks to tlr for pointing it out to me). I thought that the erasing was done with sector numbers, but it's actually done with sector start addresses. A rather stupid mistake, since I wrote the (correctly functioning) Flash emulation for x64dtv... I must be getting old. Sorry for any confusion.
The only working method of the 3 I mentioned would be "1.", the others would have failed. Note that you may still run into trouble with the bugged version in the $1fxxxx range, but flashing to $01xxxx - $1exxxx is safe. I'd still suggest using the fixed version (link above).
I have switched over to using the Flash utility version you suggested. I have flashed my new games collection from 010000 to 1fffff, but the DTV doesn't boot to the games selector (DTVSlimIntro). It only boots to the basic with CTRL key, otherwise I get a black screen. The DIR utility does show a correct listing of files in the flash, including "Intro", which should be run on boot.
I'm guessing my kernal is messed up a little, and I should reflash it. What is the easiest way to get a working sector 00 file? I would like the stock kernal, haven't noticed anything wrong with it so far. Are there ready-to-use kernal files available for download (might be copyright issues)?
Been thinking about this a lot, and after vague memories I think I know what is wrong with my dtv.
Earlier I had reflashed a game collection from 010000 to 1fffff, but kept the original kernal.
Recently, when I tried to reflash a new collection including kernal, the kernal in the package wasn't the original, but some kind of DTVBoot kernal. I made the collection with dtvmkfs, using dtvrom.bin from the VicePlus emulator.
So, does anyone have the original sector 00 file available for download? I would like to get my dtv to the original state, except new games and dtvslimintro from 010000 onwards.
I heard that Jurbo bricked his V3 DTV with the ROM-file :/ Now I feel bad providing the V2-ROM file... Is there any difference in V2/V3 ROMs which could cause non-booting?
I have some pre-programmed (V2) flash chips which I offered to solder in the PCB. It's the AT49BV163DT which has unlimited flashing times, but hasn't been tried in DTV yet. Ziili programmed these for me last year, and the programmer says everything is ok. It's worth trying at least.
Yeah, I did brick it, but it's absolutely no-one else's fault but mine.
I took the first 64 k part of the V2 rom file jsaily provided, checked that it matched TLR's documentation, erased 000000-00ffff, programmed, verified, even checked some bytes to match the doc, then exited - and after all this, I ended up with black screen, ctrl pressed or not. I really don't get what went wrong.
Jsaily has already offered help, so there might be hope for the thing still. We'll see what we'll come up with.
Is there any difference in V2/V3 ROMs which could cause non-booting?
No idea what went wrong with flashing. You have to select raw=y when flashing a normal kernal image. Also the handling of offsets in the Flash utility is not quite self-explaining. Flash is just no tool for the end user.
First rule of thumb: Do not flash the kernal.
Second: Try the flash utility in VICEplus/x64dtv first.