News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_XeNoMoRPH

CPC Dandanator Mini 1.3 - WIP

Started by XeNoMoRPH, 20:58, 17 March 18

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dandare

Glad it works,


The interface is launched to the public domain for a reason.
All source code, diagrams and definitions are there for anyone to see and contribute. Besides some excellent games, emulators and pcb variations of the project, Not a single bit of code (Java, asm or CPLD HDL) has been contributed so far.
The people involved in this project: overCLK, mad3001 and myself, have made our best to build something useful and fairly well documented, but bear in mind that this is just a hobby for us. We do not run any shop, we do not get any money nor goods from anyone running shops (and we don't want to, btw). And we all have our real jobs and families to take care of.
Despite all this, I usually answer every single question I get, up to 10-15 per week, most of them regarding third-party hw. In any case, please, don't forget we are just individuals with other obligations and this is not a "product" with warranty or support of any kind.


overCLK has ported the romcreators to Java 19 and, once we have some time, we may release them to the public. They may already be available at the dev branch on github, by the way.
We also have many many improvements already implemented that we most likely will never release, since we do not have time to support them and make them work flawlessly in every OS and configuration out there.


The difference between 2.3 and 2.5 is the Autoboot enable, required by 8BP Basic library to create multi-load games. It also includes Noel Llopis' diagnostics by default. That's it.


I could never include in a manual how to come back from any romset created by a third party since I have no idea about how they built their roms. There is, however, an emergency procedure that is documented in the manual. As far as I know, Retroworks romsets launch the romset loader if booted with U+S+B pressed, but that's entirely their decision.


Quote from: Targhan on 17:39, 30 October 21
Ok great, it works! However, it does NOT work with the 2.5, but works ok with 2.3.

Please, please, please, update the manual to show precise instruction on how to inject such ROMs, and how to change them again! The interface is really counter-intuitive, and without help I would have never manage how to make it work! Also, you could check the bug with 2.5?

Targhan

Thanks. Far from me  from criticizing your work. If you feel that way, I'm sorry. However, you must understand that the instructions are not clear, and that I would have never succeeded in using it properly without help. As for custom roms, a simple explanations is enough on your websute! And once again, it simply fails on 2.5. It's not about the roms, but about the software.
Targhan/Arkos

Arkos Tracker 2.0.1 now released! - Follow the news on Twitter!
Disark - A cross-platform Z80 disassembler/source converter
FDC Tool 1.1 - Read Amsdos files without the system

Imperial Mahjong
Orion Prime

ajcasado

Quote from: Dandare on 14:43, 30 October 21Many driver installations under linux require you to explicitly give permissions to the current user.
Yes, I know. Indeed you cannot even select a serial port that you haven't permission to use in the configuration menu of the java app.
Quote from: Dandare on 14:43, 30 October 21AFAIK, your distribution is not the one overCLK (Romset Creator programmer) is using.
What distribution is he using? And what exact version of java?
CPC 664

Empiezas a envejecer cuando dejas de aprender.
You start to get old when you stop learning.

Dandare

Quote from: ajcasado on 09:35, 01 November 21What distribution is he using? And what exact version of java?

I don't have the faintest idea

SerErris

Hi Dandare, hope you are still reading here.

I do have a problem with my Dandanator Mini 1.3b. 

It has Software 2.3 on it and that works great. However I like to get 2.5 on it. But whatever I try it will only load the 1st block and than is stuck - nothing happens and nothing continues.

I tried to find out if I need to change the serial port settings, as the documentation talks about 56700/8N2 ... but neither that setting nor the default windows 9600/8N1 working any better.

I am on Windows 10 (tried two systems).

I tried also the 2.3jar on Windows, but that crashes completely and the 2.5 software now afterwords does not even get to the 1st block anymore. I am pretty much stuck. Whatever I try I am not able to move anywhere. On two independent systems now nothing works anymore after the crash of 2.3 and 2.5 not doing anything anymore.

So any idea on what to try to get it going?

The board looks very clean and the ROM and the games within working great. 
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

poulette73

Hello,

I am also on Windows 10 with the same Dandanator Mini 1.3b interface, and a serial usb connection 9600/8N1.

Have you tried this JAR launcher version in 2.4 ? (as a compressed zip attachment to this post).


If you are stuck (it had already happened to me a few times at the beginning of my tests), there is this little BASIC program to update the Dandanator when its internal ROM no longer wants to update :



The easiest way, in order to be able to reuse it other times, is to save it on a floppy disk, or on Gotek. :)

Just run this program on CPC first.
Reload a simple compilation to start.
Then send the update from PC right after.


Another tip if the update doesn't seem to go past block 01 :

1) On CPC side : go to the update screen in Dandanator (L key)

2) On PC side : go to the EEPROM writer screen and click on the play button.
Wait until the end of the sound reading for the first block.

3) On PC side : go to File menu, Preferences, Loader tab.
Click on reload button for serial port.
Then reselect the same COM port again.

Right after closing the preferences window, the update will start and run to completion!

I stayed in version 2.3 of the Dandanator and I can make everything work : transfer rom compilations / play Los Amores De Brunilda and The Sword Of Ianna / assign a diagnostic rom to the left button.


SerErris

Thanks so far, I will give it a few tries.

What puzzles me, is that 2.3 crashes completely on trying to initiate the file transfer on two Windows 10 machines (My gaming machine as well as a laptop).

After I ran 2.3 a single time, it never did anything anymore, but Dandanator still is the same.

I tried the little assembler program and it executes, but then also does nothing.

So lets see if 2.4 makes a difference to get it going.

Does 2.3 work for you? I do have 21H1 running.
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

 Okay,

testet it with 2.4 - it does not transfer anything ... so even no TX/RX in the tool when I presse the USB logo. Sames as with 2.5 now. That is completely different and happend after 2.3 crashed. That behaviour is consistent on both windows machines now. After 2.3 was running and crashing, nothing works anymore. is the software putting anything in a config file ore in a registry?
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

poulette73

I'm running Windows 10 21H2, and Java 1.8.0_333 (x64) release.

I don't know where settings for ROM Manager are stored : nothing in its application directory, nothing in Program Files, ProgramData, or User\AppData, and nothing found in a registry search. I think it's just a problem on the PC. Or maybe a driver issue.

You can find the exact driver attached in this post.

Check this link which shows step by step, in order to start everything from scratch :
www.amstrad-noob.com/2021/02/21/programming-a-mini-dandanator/


If all is ready : USB driver, Java version :

1) Launch dandanator-cpc-2.4.jar application.
2) Select the COM port same as shown in Windows Device Manager (settings 9600/8N1)
3) On the CPC side, launch the small BASIC program (with Dandanator connected of course)
4) Download and then try to send a classic Dandanator compilation, as can be found at the middle of this website:
auamstrad.es/software/coleccion-de-roms-para-dandanator-y-des/

Normally this should work.

And afterwards, you can again use the (L)oader function integrated in the Dandanator.

Fingers crossed, good luck. 🤞


SerErris

Thanks, 

no change - simply does not do anything. So the connection to the CH340 works ... I can see the serial port. 

However It seems like the CH340 does not transfer or trigger or does anything with the CPLD. 

I tried with the loader, i tried with the basic program, i tried on two windows 10 and one windows xp laptop (three different hardware), I tried different USB cables .. nothing works at all.

I think my dandanator is now stuck in this software it has on it. I have no idea how I could change the software and I cannot talk to it with any version of dandanator cpc software. 

On Windows XP at least 2.3 is not crashing and it got me 1 time transferring the first block (partially?)

But then nothing
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

Okay, now it does at least something.

I using now 2.3 version of the software on XP and can start the basic program and on clicking on the USB symbol it transfers something, gets the eeprom write running on CPC and from there starts transfering the first block and then is stuck again.

I can only see the TX lighting up in the ROM Generator, but never see any RX. So I would assume, that the eeprom writer will send some handshake messages back (after each block or so).

Can you confirm if you can see the RX indicator showing anything if you load the software?

It might just be, that the RX connection is somehow broken.

That would also be the reason why it never starts up automatically doing anything but I allways need to push the USB button.

Any suggestions here?
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

Dandare

Hi,
It looks like an RX error indeed. But it may be a number o things. 
Could you start the program from the command prompt and copy the log here?
java-jar <program.jar>
Being "program" the name of the Java file you are currently using

As a side note, the Java program configures the serial port regardless of the windows default configuration, so there is no need to tinker with baudrates or data/parity bits

poulette73

I'm not thinking of an operating system cause.

It would be necessary to try with another USB cable. 👍 

SerErris

USB cables ruled out ... I used a lot of different ones, also the ones that do communcation to other serial port adaptors well ... so nope - not the USB cable.

I have the usb port on the dandanator under suspect. It is pretty much loose (not soldered to the main pins), so anything could have happend to the contacts for the data lines - of which only two are actually connected).
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

mad3001

If you have problems with the usb connector you can always directly solder an usb cable... I had to do that with my dancpc ... you only need 3 wires GND/D+/D- and you can solder them directly to the pins of the CH340G (GND pin1, D+ pin5 and D- pin6).

CMOSS

Hi everyone,

I have the exact same problem as SerErris. I cannot transfer anything on to the device, even though Windows (11 in my case) sees it when connected. If I try to send a game directly via USB I get a timeout, and nothings gets transferred.

I've tried with versions 2.5 and 2.4 (2.3 crashes when trying to open the EEPROM writer screen.

Dandare, is it possible to get a cart with version 2.5 (and hence with the diagnostics from Noel Llopis included)?

Thanks in advance.

SerErris

So got some time to work on it again. I resoldered the USB port which has now proper connection. The USB port was wobbly and I wanted to ensure that it s not the port. All Pins are now connected correctly and also no short on any pin to GND or the connector. 

I also have a complete good connection from The Type A connector to the CH340G. So everything looks good. 

However I still cannot get anything to work. The PC recognizese the CH340G serial interface. (COM3) in my case.

I stated the java generator via cmd prompt and this is the output:

As soon as I press the USB button, the application creates an exception, but still runs. No activity.

D:\Development\CPC\dandanator>java -jar dandanator-cpc-2.5.jar
72 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Allgemein', fXmlLocation='/com/grelobites/romgenerator/view/preferences.fxml', precedence=1}
72 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Loader', fXmlLocation='/com/grelobites/romgenerator/view/eepromwriterconfiguration.fxml', precedence=3}
189 [JavaFX Application Thread] DEBUG ApplicationContext - setRomSetHandlerInfoPane Pane[id=romSetHandlerInfoPane, styleClass=gameInfoPane]
197 [JavaFX Application Thread] DEBUG CharSetFactory - CharSetFactory initialized with [charsets/IKARI WARRIORS.CHR, charsets/KNIGHTLORE.CHR, charsets/LODERUNNER.CHR, charsets/LORDMIDNI.CHR, charsets/PROJECT F.CHR, charsets/ROM.CHR, charsets/SPRINT.CHR, charsets/TERRACRESTA.CHR, charsets/ZZOOM.CHR]
199 [JavaFX Application Thread] DEBUG Configuration - persistConfigurationValue lastUsedDirectory, C:\Users\chris\Downloads\compilacionI
199 [JavaFX Application Thread] DEBUG ScreenshotGameRenderer - Loading default image cpc464.scr
201 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
202 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 1, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
222 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
223 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 1, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
235 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
235 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
247 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
247 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
254 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
255 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
262 [JavaFX Application Thread] DEBUG ApplicationContext - Changing RomSetHandler to DDNTR_V2
262 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Binding RomSetHandler to ApplicationContext
287 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - Initializing DandanatorCpcFrameController
291 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - onGameSelection oldGame=null, newGame=null
292 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
292 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
293 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
308 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Dandanator CPC', fXmlLocation='/com/grelobites/romgenerator/handlers/dandanatorcpc/view/dandanatorcpcpreferences.fxml', precedence=2}
312 [JavaFX Application Thread] DEBUG EepromWriterConfiguration - persistConfigurationValue serialPort, COM3
312 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Used size: 16384 , total size: 507904
313 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - Changing bar style on romUsage change to 0.03225806451612903
313 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Used size: 16384 , total size: 507904
315 [JavaFX Application Thread] DEBUG MainAppController - onGameSelection oldGame=null, newGame=null
338 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
338 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
355 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
355 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
355 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
362 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
362 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
363 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
369 [JavaFX Application Thread] DEBUG DandanatorCpcPreferencesController - Executing toString on null
377 [JavaFX Application Thread] DEBUG EepromWriterConfigurationController - Executing toString on null
382 [JavaFX Application Thread] DEBUG BaseJniExtractor - Not deleting leftover folder C:\Users\chris\AppData\Local\Temp\nativelib-loader_3362907011443725152: is 151890ms old
480 [JavaFX Application Thread] DEBUG NativeLibraryUtil - processor is INTEL_64 os.arch is amd64
480 [JavaFX Application Thread] DEBUG NativeLibraryUtil - architecture is WINDOWS_64 os.name is windows 11
480 [JavaFX Application Thread] DEBUG NativeLibraryUtil - architecture is WINDOWS_64 os.name is windows 11
481 [JavaFX Application Thread] DEBUG NativeLibraryUtil - platform specific path is natives/windows_64/
481 [JavaFX Application Thread] DEBUG BaseJniExtractor - mappedLib is jssc.dll
482 [JavaFX Application Thread] DEBUG BaseJniExtractor - URL is jar:file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll
483 [JavaFX Application Thread] DEBUG BaseJniExtractor - URL path is file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll
483 [JavaFX Application Thread] DEBUG BaseJniExtractor - Extracting 'jar:file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll' to 'C:\Users\chris\AppData\Local\Temp\nativelib-loader_8017143508815589438\jssc.dll'
487 [JavaFX Application Thread] DEBUG Util - Serial Port Names are [COM3]
2964 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining 39
2966 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining 39
2966 [JavaFX Application Thread] DEBUG BinaryRecordIterator - segments 1, dataLength 39, currentRecord 0
2966 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Writing segment with remaining 39
2967 [JavaFX Application Thread] DEBUG BinaryRecordIterator - CRC to position 257
2967 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Calculated CRC 0x87b7
2968 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining -2009
2969 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Found 3 blocks in tape
2971 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Block offsets are [0, 3, 285]
2971 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Pause or Stop the Tape block
2980 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Turbo Speed block[leaderLength=2340, sync1Length=1190, sync2Length=1190, zeroLength=1187, oneLength=2375, leaderPulses=4096, bitsLastByte=8, endBlockPause=14ms, currentBlockLength=263, tapePosition=22]
2984 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Turbo Speed block[leaderLength=2340, sync1Length=1190, sync2Length=1190, zeroLength=1187, oneLength=2375, leaderPulses=4096, bitsLastByte=8, endBlockPause=2000ms, currentBlockLength=263, tapePosition=304]
4247 [Audio Player] DEBUG SampledAudioDataPlayer - Playing audio on mixer Primärer Soundtreiber, version Unknown Version
4250 [Audio Player] DEBUG SampledAudioDataPlayer - Audio format from media file is PCM_UNSIGNED 48000.0 Hz, 8 bit, stereo, 2 bytes/frame,
20152 [Audio Player] DEBUG SampledAudioDataPlayer - State is now STOPPED
26525 [JavaFX Application Thread] DEBUG EepromWriterController - Got rescue eewriter of size 4101
26526 [JavaFX Application Thread] ERROR EepromWriterController - Preparing Data Producer
java.lang.NullPointerException
        at com.grelobites.romgenerator.view.EepromWriterController.sendUsbRescue(EepromWriterController.java:223)
        at com.grelobites.romgenerator.view.EepromWriterController.lambda$initialize$9(EepromWriterController.java:368)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.Node.fireEvent(Node.java:8411)
        at javafx.scene.control.Button.fire(Button.java:185)
        at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.Scene$MouseHandler.process(Scene.java:3760)
        at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3488)
        at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1765)
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2497)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:411)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
        at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
        at com.sun.glass.ui.View.notifyMouse(View.java:941)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:185)
        at java.lang.Thread.run(Unknown Source)


Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

Okay, now I hooked up everything to my logic analyzer ... 

I can see the TX data going out from the CH340 to the CPLD, but I cannot see any RX activity.

To achieve that I need to do the following to get at least some output:

1. Boot CPC in normal mode via "Disable" button on the dandanator
2. Load the Basic Loader from Tape and run it.
3. Start the ROM Generator (2.5)
4. Click the play button for the loader and wait it to finish (it will actually not do anyhting)
5. Reset the COM port settings
6. Now go to the programmer menu in ROM Generator and click on the USB symbol.

Now I can see the TX but never any RX.

Which part of the whole thing is actually doing the RX/TX stuff? Is it the CPLD in itself writing to the EEPROM, or is it the CPC writing to the EEPROM directly?

Struggling to identify the potential issue here.
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

#243
The above procedure leads to this log:

D:\Development\CPC\dandanator>java -jar dandanator-cpc-2.5.jar
93 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Allgemein', fXmlLocation='/com/grelobites/romgenerator/view/preferences.fxml', precedence=1}
93 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Loader', fXmlLocation='/com/grelobites/romgenerator/view/eepromwriterconfiguration.fxml', precedence=3}
263 [JavaFX Application Thread] DEBUG ApplicationContext - setRomSetHandlerInfoPane Pane[id=romSetHandlerInfoPane, styleClass=gameInfoPane]
274 [JavaFX Application Thread] DEBUG CharSetFactory - CharSetFactory initialized with [charsets/IKARI WARRIORS.CHR, charsets/KNIGHTLORE.CHR, charsets/LODERUNNER.CHR, charsets/LORDMIDNI.CHR, charsets/PROJECT F.CHR, charsets/ROM.CHR, charsets/SPRINT.CHR, charsets/TERRACRESTA.CHR, charsets/ZZOOM.CHR]
276 [JavaFX Application Thread] DEBUG Configuration - persistConfigurationValue lastUsedDirectory, C:\Users\chris\Downloads\compilacionI
276 [JavaFX Application Thread] DEBUG ScreenshotGameRenderer - Loading default image cpc464.scr
282 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
283 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 1, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
307 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
307 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 1, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
326 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
326 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
346 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
346 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
352 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
352 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
356 [JavaFX Application Thread] DEBUG ApplicationContext - Changing RomSetHandler to DDNTR_V2
356 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Binding RomSetHandler to ApplicationContext
389 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - Initializing DandanatorCpcFrameController
393 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - onGameSelection oldGame=null, newGame=null
393 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
393 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
393 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
409 [JavaFX Application Thread] DEBUG PreferencesProvider - Adding preferences provider PreferencesProvider{name='Dandanator CPC', fXmlLocation='/com/grelobites/romgenerator/handlers/dandanatorcpc/view/dandanatorcpcpreferences.fxml', precedence=2}
412 [JavaFX Application Thread] DEBUG EepromWriterConfiguration - persistConfigurationValue serialPort, COM3
413 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Used size: 16384 , total size: 507904
414 [JavaFX Application Thread] DEBUG DandanatorCpcFrameController - Changing bar style on romUsage change to 0.03225806451612903
414 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - Used size: 16384 , total size: 507904
415 [JavaFX Application Thread] DEBUG MainAppController - onGameSelection oldGame=null, newGame=null
444 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
444 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
464 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
464 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
465 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
471 [JavaFX Application Thread] DEBUG DandanatorCpcV2RomSetHandler - updateMenuPreview
471 [JavaFX Application Thread] DEBUG ImageUtil - Is there still data available: 0
471 [JavaFX Application Thread] DEBUG ImageUtil - scrLoader with screenMode 0, crtcDisplayData CrtcDisplayData{visibleWidth=40, visibleHeight=25, displayOffset=0}
477 [JavaFX Application Thread] DEBUG DandanatorCpcPreferencesController - Executing toString on null
490 [JavaFX Application Thread] DEBUG EepromWriterConfigurationController - Executing toString on null
493 [JavaFX Application Thread] DEBUG BaseJniExtractor - Not deleting leftover folder C:\Users\chris\AppData\Local\Temp\nativelib-loader_188679461934905110: is 54191ms old
584 [JavaFX Application Thread] DEBUG NativeLibraryUtil - processor is INTEL_64 os.arch is amd64
584 [JavaFX Application Thread] DEBUG NativeLibraryUtil - architecture is WINDOWS_64 os.name is windows 11
584 [JavaFX Application Thread] DEBUG NativeLibraryUtil - architecture is WINDOWS_64 os.name is windows 11
585 [JavaFX Application Thread] DEBUG NativeLibraryUtil - platform specific path is natives/windows_64/
585 [JavaFX Application Thread] DEBUG BaseJniExtractor - mappedLib is jssc.dll
585 [JavaFX Application Thread] DEBUG BaseJniExtractor - URL is jar:file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll
585 [JavaFX Application Thread] DEBUG BaseJniExtractor - URL path is file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll
585 [JavaFX Application Thread] DEBUG BaseJniExtractor - Extracting 'jar:file:/D:/Development/CPC/dandanator/dandanator-cpc-2.5.jar!/natives/windows_64/jssc.dll' to 'C:\Users\chris\AppData\Local\Temp\nativelib-loader_2807446140764061943\jssc.dll'
594 [JavaFX Application Thread] DEBUG Util - Serial Port Names are [COM3]
4118 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining 39
4118 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining 39
4119 [JavaFX Application Thread] DEBUG BinaryRecordIterator - segments 1, dataLength 39, currentRecord 0
4119 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Writing segment with remaining 39
4119 [JavaFX Application Thread] DEBUG BinaryRecordIterator - CRC to position 257
4119 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Calculated CRC 0x87b7
4119 [JavaFX Application Thread] DEBUG BinaryRecordIterator - Asking for record with remaining -2009
4120 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Found 3 blocks in tape
4122 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Block offsets are [0, 3, 285]
4122 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Pause or Stop the Tape block
4129 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Turbo Speed block[leaderLength=2340, sync1Length=1190, sync2Length=1190, zeroLength=1187, oneLength=2375, leaderPulses=4096, bitsLastByte=8, endBlockPause=14ms, currentBlockLength=263, tapePosition=22]
4135 [JavaFX Application Thread] DEBUG CdtWavOutputStream - Turbo Speed block[leaderLength=2340, sync1Length=1190, sync2Length=1190, zeroLength=1187, oneLength=2375, leaderPulses=4096, bitsLastByte=8, endBlockPause=2000ms, currentBlockLength=263, tapePosition=304]
5169 [Audio Player] DEBUG SampledAudioDataPlayer - Playing audio on mixer Primärer Soundtreiber, version Unknown Version
5172 [Audio Player] DEBUG SampledAudioDataPlayer - Audio format from media file is PCM_UNSIGNED 48000.0 Hz, 8 bit, stereo, 2 bytes/frame,
21064 [Audio Player] DEBUG SampledAudioDataPlayer - State is now STOPPED
24560 [JavaFX Application Thread] DEBUG EepromWriterConfiguration - persistConfigurationValue serialPort, null
24560 [JavaFX Application Thread] DEBUG EepromWriterController - Resetting Serial Consumer
24560 [JavaFX Application Thread] DEBUG Util - Serial Port Names are [COM3]
25594 [JavaFX Application Thread] DEBUG EepromWriterConfiguration - persistConfigurationValue serialPort, COM3
25594 [JavaFX Application Thread] DEBUG EepromWriterController - Initializing Serial Consumer
25595 [JavaFX Application Thread] DEBUG SerialBlockService - Creating serial port on COM3
25605 [SerialBlockService] DEBUG SerialPortConfiguration - Applying serial port configuration SerialPortConfiguration{baudrate=57600, dataBits=8, stopBits=2, parity=0}
31862 [JavaFX Application Thread] DEBUG EepromWriterController - Executing PlayerController onPageLeave
31862 [JavaFX Application Thread] DEBUG EepromWriterController - Resetting Serial Consumer
32613 [SerialBlockService] DEBUG SerialBlockService - Exiting SerialListener service thread
35748 [JavaFX Application Thread] DEBUG EepromWriterController - Initializing Serial Consumer
35748 [JavaFX Application Thread] DEBUG EepromWriterController - Resetting Serial Consumer
35748 [JavaFX Application Thread] DEBUG SerialBlockService - Creating serial port on COM3
35757 [SerialBlockService] DEBUG SerialPortConfiguration - Applying serial port configuration SerialPortConfiguration{baudrate=57600, dataBits=8, stopBits=2, parity=0}
39457 [JavaFX Application Thread] DEBUG EepromWriterController - Got rescue eewriter of size 4101
39458 [JavaFX Application Thread] DEBUG EepromWriterController - Binding data producer com.grelobites.romgenerator.util.eewriter.SerialDataProducer@3c92e74c
39459 [RomGenerator executor service] DEBUG SerialDataProducer - Sending block of 1024 bytes
39642 [RomGenerator executor service] DEBUG SerialDataProducer - Sending block of 1024 bytes
39837 [RomGenerator executor service] DEBUG SerialDataProducer - Sending block of 1024 bytes
40032 [RomGenerator executor service] DEBUG SerialDataProducer - Sending block of 1024 bytes
40227 [RomGenerator executor service] DEBUG SerialDataProducer - Sending block of 5 bytes
40234 [JavaFX Application Thread] DEBUG EepromWriterController - Unbinding data producer


Further Troubleshooting (and that is the end of todays activities):
1. Updated the CPLD via the ROM Generator and Arduino UNO. Showed greenlight at the end. So looks like it worked.
2. Retried the load - no change.

The best I can get (see log above) is a single block transfer - but after that nothing happens.

The Dandanator EEPROM works grate - can play everything that is stored in it. But I cannot get it to update. As I said I never got any response (RX) from the CPLD to the CH340. The RX line is allways high (no short here, so no connection from +5V or +3.3V to this pin.

Now next I need to read the developer documentation to understand how the programming routine actually works.

One thing I recognize now, it works with the load but cannot transfer ..

It is stuck at the first bar (see screenshot)
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

Has anyone a commented source code of the loader in assembly? 

I can find the loader in the JAR file (just unzipped it), but I cannot find the ASM source code anywhere.

In the dandanator-cpc sources I could not find the ASM code to build the rescue-eewriter.bin

I was able to disassamble it putting it to address 0x6000 but that is kind of painful to understand what works and what does not work.

I learned in the meantime that RX high all the time is actually correct during receive (TX from CH340 side) to keep the line idle. 

I will now write the very small serial send program to just connect putty and output some data, to see if sending data from CPC to USB is actually working at all.

If that works, I am actually out of ideas of what could be wrong.
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

Okay I got it finally working.

Some things are confusing. So I think a documentation update actually any documentation on how to use the rom generator together with the dandanator would be great. 

I would love to put in some work in the docs with the knowledge I gained now.

So back to my case:
1. The problem is the CH340 chip. It seems to be broken as it does not transmit the RX signals out to USB. So I need to change it.

2. Even after soldering another USB/Serial converter (actually an FTDI232) to the RX/TX lines, I could not get the rom generator to upload anything. However I could see that RX/TX work correctly and transmit through USB to the PC.

3. Then I started the rom generator with log generation again to stumble across this message:
505071 [SerialBlockService] DEBUG SerialBlockService - Block 0 Requested by serial port
Block not found.

Okay some signs of live here.
What is going wrong?

The answer is: If you do not prepare a rom, there is no rom. So you either need to import one, or you just create one. I decided to create one from a disk (that actually did not work, as it was just the loader not the actual game).

Then I created a rom from it (and saved it) and then after restarting the CPC and setting into loader mode, I could see that the CPC is pinging the F0s (actually the small USBtoUART bord has two LEDs on it - very handy). 

I switched the pages back and forth one time and - you do not believe it - the rom started to load.

Now I do have it on 2.5 loader and also have the latest DIAG ROM from lopis in it.

Next - need to desolder the CH340G and solder a new one.

I also will start to design an update to the board. So that you can see the TX/RX lines with two small LEDs. That was very helpful for me, as looking at the analyzer is not that enjoyable and most people have no chance to actually look at it.

So this case is now finally settled but took me a lot of reengineering of what actually happens and how the whole thing works. There is literally no documentation on how the loader works, what it does and a documented ASM source code would be very welcome. 

Again, is there any github for the whole project, that does include all the details (e.g schematics, assembler code for the binary files and other stuff)?
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

SerErris

Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

reidrac

@SerErris I know this is probably not the answer your are looking for, but IMHO the Dandanator project could use some help with the docs and collecting all you mentioned on a single git repo (on GH or whatever).

May be you could be doing that.
Released The Return of Traxtor, Golden Tail, Magica, The Dawn of Kernel, Kitsune`s Curse, Brick Rick and Hyperdrive for the CPC.

If you like my games and want to show some appreciation, you can always buy me a coffee.

SerErris

@reidrac you are probably right.

@Dandare what would be your opinion on that? 

Please do not take it as criticism, because I know how hard it is to make such projects in your spare time (as we are all doing it for a hobby).

I think one of the main reasons why no one is doing any further contribution is the following:
  • If it works, there is not much reason to ever come back as it does what most people want from it - so no reason to contribute anything more.
  • For those would like to enhance the product there are two groups
a. Those who have ideas but not the knowledge to actually do itb. Those who have knowledge but cannot find any documentation to actually help out.[/list]

I am now specifically going into point 2b from my own experience in the last few days.

What it would require (for different parts):
1. Available schematics - if this is considered to be open source, the schematics should be available in source format (e.g. KiCad). I did not find it. The best i could find is a low resolution .jpg - and that you can only find if you go to the spanish site. There is for instance a missing link in the english translated page. I found this after I actually wanted to use it. So I needed to look at the gerber files to understand how the pins connect. This is already pretty much reverse engineering
2. The source code for all Z80 code running on the CPC should be available somewhere. I could not find any repository that holds this code. I needed to do quite a bit of reverse engineering (e.g. disassembly and interpretation) of the code. Source code would help, even better well commented code.
3. The JAVA code for the ROM generator is available - however it is undocumented. There is no document explaining the structure or any comments within the code. It is just code and it is not possible to understand it or contribute to it. I am personally not a JAVA programmer, but could understand it by understanding the structure. However here it is impossible to understand the logic of the EEPROM programmer, how it is getting transferred from the rom generator to the CPC in chunks and what program part is controlling this. 
4. Processes: As per above a documentation on how the processes (workflow) work. As everything is running within the rom generator it is for most of the people a complete black box. Esp. as the CPC side of the things has no source files available. So for me looking at the device it was not even clear who is doing what part (PC vs Dandanator CPLD vs CPC). 

There is lots of things that I am willing to contribute to, so please let me know how that can work (e.g. what github would we start working in?).
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

Dandare

#249
Hi SerErris,
Unfortunately, we currently don't have the time to gather all documentation for the project. However, we did a "developer document" some years ago. It's in English and available at Dandare.es. This is the link : Developer Documentation CPC Dandanator

While it's not the full thing, there are some detailed information, including the full source VHDL definition for the CPLD, and even a loading routine through USB, so you know how it works. Also, all commands to the Dandanator are explained.

I'll talk to the team to try and start gathering things (slowly, I'm afraid). If you have any idea on what contributions you'd like to start with, maybe we can put together the most relevant information first.

Cheers,
DL

Powered by SMFPacks Menu Editor Mod