News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Arnaud

CPCEC a new emulator from cngsoft

Started by Arnaud, 08:14, 16 March 19

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

GUNHED

Quote from: cngsoft on 13:26, 01 December 21
Gunhed: I can live with INI profiles. Write once, edit seldom, use daily.
As developper I do change ROMs several times a day. (Sometimes several times an hour).
It would be a great advantage to have a ROM selection menu (like any other emulator).  :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

norecess464

I just released a new version of the Linux GTK3 front-end for CPCEC
https://gitlab.com/norecess464/cpcec-gtk/-/releases/v1.1-20211130

Changelog:

       
  • Integrated CPCEC emulation core 20211130
  • Added new menu options to set realtime emulation speed to 1x or 4x
  • Memory inspector + RAM/ROM configuration got moved out from Z80 Debugger (created a new dedicated window for that)
  • User can select to READ or WRITE mode for Memory Inspector (cf. data location where the Z80 will READ from -or- WRITE to)
  • Added new menu options to resize main window to 100% or 400%
  • Saved last opened folders into configuration file
  • Minor UI tweaks
  • Minor fixes
  • Updated shortcuts
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

TotO

QuoteSaved last opened folders into configuration file
Any program should start by doing that. 8)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

ralferoo

Quote from: dlfrsilver on 12:23, 22 March 19
the tapes are always started with turbo mode ;
I'm biased, but this is a negative point!  :P


But in all seriousness, once you save the config it's remembers the correct setting and tapes play at normal speed if that's what you'd selected... :)


Anyway, great emulator!

cngsoft

Sooner or later, even the slightest exposure to Longshot's dossier ACCC2-FR was going to have an impact on CPCEC.




CPCEC-ZXSEC 20211217 -- "twenty-first public release. Important changes in video emulation: all parts of the 2021 rerelease of "Amazing Megademo" work on all CRTCs in CPCEC, thanks to Longshot's new monumental handbook "Amstrad CPC CRTC Compendium", and titles that check the floating bus through ULA-contended ports such as "A Yankee in Iraq" run properly in ZXSEC, even on Plus3. The AY chip has been rewritten to ensure that Playcity (CPC) and Turbosound (Spectrum) share the exact clock with the main audio chips (6-channel music on Pentagon is no longer off-key), and stereo channels are more flexible now, switching between the default ABC stereo setup and the ACB setup of AY-Melodik; audio oversampling now relies on system clock ticks instead of output samples. Minor fixes in the FDC logic (protected rereleases of "Arkanoid 2" and "Renegade" expect the disc to keep moving while the SENSE INTERRUPT STATUS command takes place), the ZIP archive reader (hidden files must stay invisible) and the WAV and AVI file handling (proper 2-byte alignment must be performed in the extremely rare cases where the length of a block is odd). V-hold options in CPCEC have been merged into one (disabling "Standard V-hold" extends the vertical sync both up and down), and the paired options PlayCity/Digiblaster (CPCEC) and Turbosound/Covox $FD (ZXSEC) are mutually exclusive."

Trivia: although the obvious priority was to make the whole "Amazing Megademo 2021" work on CRTC0, the Mega-Raster part kept resisting until I noticed that the changes I was trying to do also had an impact on the easier-to-analyse "Xmas 2019" intro. It was something of a Christmas gift!
(if you can't see the banner right now my server is currently offline)

cpcitor

Quote from: cngsoft on 13:17, 19 December 21
Sooner or later, even the slightest exposure to Longshot's dossier ACCC2-FR was going to have an impact on CPCEC.

Impressive document, that compendium at http://www.logonsystem.fr/down/ACCC2-FR.pdf.



Quote from: cngsoft on 13:17, 19 December 21
CPCEC-ZXSEC 20211217 -- "twenty-first public release.

Quote from: cngsoft on 13:17, 19 December 21
The AY chip has been rewritten (...) audio oversampling now relies on system clock ticks instead of output samples.

Ah, nice! That is a nice step to have best results on https://www.cpcwiki.eu/forum/emulators/sound-emulation-survey/25/

Anyway, propagated to https://github.com/cpcitor/cpcec
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.


cpcitor

Quote from: ralferoo on 11:04, 20 December 21
This goes to a 404 page

Strange. When I click on the link it opens the PDF document correctly in the browser.

http://www.logonsystem.fr/down/ACCC2-FR.pdf
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

ralferoo

#208
Strange, yeah it works again now!


And looks interesting (and long!)

norecess464

#209
I just released a new version of cpcec-gtk : https://gitlab.com/norecess464/cpcec-gtk/-/releases/v1.2-20211217

The big update of the day is the addition of a new ROM Configuration window.

Complete changelog since previous version:

       
  • Integrated CPCEC emulation core 20211217
  • Added new ROM Configuration window allowing to manage ROMs of the emulated Amstrad machine (lower, upper 0 to 127). For more information, please read the documentation! (https://gitlab.com/norecess464/cpcec-gtk)
  • Use different background color than pure black while debugging
  • Now remember last clicked filter type in Library window
  • Main window's position and size while debugging is now saved into/restored from config
  • Fixed filename parsing of drag'n'dropped file onto the Main window
  • All file open dialogs can now accept lower and upper cases for file extensions
  • Some minor improvements and bug fixes
  • Documentation updated
@cngsoft Thanks again for creating such a great and hackable emulator :)
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

GUNHED

Quote from: norecess on 18:37, 20 December 21

       
  • Added new ROM Configuration window allowing to manage ROMs of the emulated Amstrad machine (lower, upper 0 to 127). For more information, please read the documentation! [/l][/l]
Awesome!!! Now it can compete with the other established CPC emulators. I will have a closer look at it now. Thank you very much.  :) :) :) [/list]
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

norecess464

#211
Quote from: GUNHED on 22:51, 20 December 21Now it can compete with the other established CPC emulators.

Well, there is no "competition". As a reminder, I'm doing cpcec-gtk for my own needs on Sonic GX's development, and I'm sharing here my UI work back to the Linux community, exactly like @cngsoft did with his CPCEC emulator AND @roudoudou did with his RASM assembler.

As a developer, for the best emulation accuracy and overall ergonomy I would still recommend using WinAPE on Windows. In my opinion it remains the best emulator ever made for the Amstrad CPC. But it wasn't perfectly running through wine on Linux, hence cpcec-gtk...

Other emulators are progressively catching up (over WinAPE), so we are living interesting times.  ;D
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

cngsoft

New year, new version:



20211231 -- minor patch adding printer emulation: the user selects a file that will store the data sent to the CPC's 7-bit line printer and the Spectrum's ZX Printer (48K), the serial 8-bit line printer (128K and Plus2), and the parallel 8-bit line printer (Plus3). The printer port of the Plus3 happens to be the floating bus too, leading to changes in the video and floating bus logic. ZXSEC can save uncompressed SZX snapshots now, although SNA stays the default format. Following research by Hoglet67 and tests by Ped7g, the Z80 block operations LDIR, LDDR, CPIR, CPDR, INIR, INDR, OTIR and OTDR show special temporary flags if an interruption arises before the end of the block. New commandline options `-o`, `-t`, `-y` and `-z` that provide the opposite behaviors of `-O`, `-T`, `-Y` and `-Z`. Happy new year 2022!

The emulation of printers led to an interesting discovery: the Plus3 floating bus is the printer port, same addresses and everything. Ast A. Moore's research on the floating bus stated that BIT 0 was always set: this bit happens to be the !READY signal of the Plus3 printer port, so plugging a printer (or in this case, enabling its emulation) makes the FLOAT3 test show even values and "A Yankee in Iraq" hang until the printer gets unplugged.
(if you can't see the banner right now my server is currently offline)

cpcitor

Quote from: cngsoft on 12:19, 02 January 22
20211231 -- minor patch adding printer emulation: the user selects a file that will store the data sent to the CPC's 7-bit line printer and the Spectrum's ZX Printer (48K), the serial 8-bit line printer (128K and Plus2), and the parallel 8-bit line printer (Plus3). The printer port of the Plus3 happens to be the floating bus too, leading to changes in the video and floating bus logic. ZXSEC can save uncompressed SZX snapshots now, although SNA stays the default format. Following research by Hoglet67 and tests by Ped7g, the Z80 block operations LDIR, LDDR, CPIR, CPDR, INIR, INDR, OTIR and OTDR show special temporary flags if an interruption arises before the end of the block. New commandline options `-o`, `-t`, `-y` and `-z` that provide the opposite behaviors of `-O`, `-T`, `-Y` and `-Z`. Happy new year 2022!

The emulation of printers led to an interesting discovery: the Plus3 floating bus is the printer port, same addresses and everything. Ast A. Moore's research on the floating bus stated that BIT 0 was always set: this bit happens to be the !READY signal of the Plus3 printer port, so plugging a printer (or in this case, enabling its emulation) makes the FLOAT3 test show even values and "A Yankee in Iraq" hang until the printer gets unplugged.

New release, new github update. ;-) https://github.com/cpcitor/cpcec

You appear to have introduced some changes in PSG emulation, can you explain them?

Especially this?

psg_tone_state[c]=(psg_tone_count[c]=psg_tone_limit[c])<=PSG_ULTRASOUND?psg_ultra_beep:~psg_tone_state[c];

Is the change related to the recent release of the final version with digitized voice of https://cpcitor.itch.io/just-get-9 ?
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

cngsoft

Quote from: cpcitor on 13:22, 02 January 22New release, new github update. ;-) https://github.com/cpcitor/cpcec

You appear to have introduced some changes in PSG emulation, can you explain them?

Especially this?

psg_tone_state[c]=(psg_tone_count[c]=psg_tone_limit[c])<=PSG_ULTRASOUND?psg_ultra_beep:~psg_tone_state[c];

Is the change related to the recent release of the final version with digitized voice of https://cpcitor.itch.io/just-get-9 ?
The changes are just a cleanup. Instead of multiplying the counter limits of the noise and hardware envelope by two, I alternatively check each on every tick of the PSG chip. Similarly, the ultrasound filter performs fewer tests, as I can reduce it to detecting Spectrum-like beepers on the CPC clobbering the register 7, the mixer: "Terminus" and "Stormbringer" are the handiest cases. "Just Get 9" uses a different method that needs no filtering at all: clobbering the amplitude.
(if you can't see the banner right now my server is currently offline)

norecess464

A new version of cpcec-gtk is available:

       
  • Integrated CPCEC emulation core 20211231
  • Added new feature "Memory Visualizer". With it, the user can see which portions of RAM are actually used (in real-time). Video demo is available here:
    https://youtu.be/xFdf0mpi0ZI
  • Added new feature "Extended Monitor". With it, the user can see hidden portions of the monitor. This is useful for CRTC debugging/programming. Video demo is available here:
    https://youtu.be/N0AI4sIhfL0
  • Bugfix: when using the virtual joystick (cf. left control/left alt/arrow keys simulating a joystick), other keys of the keyboard are now also accessible.
  • Updated documentation to match all latest changes
    Download: https://gitlab.com/norecess464/cpcec-gtk/-/releases
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

Gryzor

The memory visualizer function is oddly satisfying!

cpcitor

Quote from: norecess on 08:51, 03 January 22
A new version of cpcec-gtk is available:

       
  • Integrated CPCEC emulation core 20211231
  • Added new feature "Memory Visualizer". With it, the user can see which portions of RAM are actually used (in real-time). Video demo is available here:
    https://youtu.be/xFdf0mpi0ZI
  • Added new feature "Extended Monitor". With it, the user can see hidden portions of the monitor. This is useful for CRTC debugging/programming. Video demo is available here:
    https://youtu.be/N0AI4sIhfL0
  • Bugfix: when using the virtual joystick (cf. left control/left alt/arrow keys simulating a joystick), other keys of the keyboard are now also accessible.
  • Updated documentation to match all latest changes
    Download: https://gitlab.com/norecess464/cpcec-gtk/-/releases

Hi! Great progress! I noticed some bug fixed (since last time I tried).

It is nice for example to see how Just Get 9 unpacks to fill most of the available memory.

On the same topic of "memory visualizer", one thing I sometime wish I could do is similar (and perhaps much easier with code you have now).
The idea is to show a kind of "current instantaneous screen content", as if you could freeze the Z80, preserve memory content and the Z80-writable CRTC register contents, and just show a complete image.

In a number of cases (arguably not every case), this could show interesting things, like hints to understand how some effect is made.


BTW, I observed a quite annoying bug. Nearly every time the ROM firmware reinitialized (and that includes calls to MC START PROGRAM), the emulated CPC believes that the space bar (or sometimes the CPC z key) is pressed continuously, while in reality no key is pressed at all. Pressing and releasing the affected key fixes the problem once, but if you are running some intro that exits at any key pressed (like the intro of Just Get 9 with stars), it just stops the show. Tried more than 20 times, I could run that part only once.
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

cpcitor

Regular cpcec and text-based cpc-plus allow to fast-forward with F6, which I use a lot and cpcec-gtk misses.

I'm very surprised that the debug window does not offer a "continue" button. Pressing "esc" like in the text-based cpcec-plus indeed continues, but the debugger window disappears. This is very surprising. Every debugger I've used in any windowed environment offers a "continue" button, and remains visible when the program runs (whether is refreshes in real time or not, IIRC I've seen both).

Quote from: norecess on 08:51, 03 January 22Added new feature "Memory Visualizer". With it, the user can see which portions of RAM are actually used (in real-time).

Hey, the huge bouncing-towards-the-viewer scroll text in "still rising" is made with Z80-based memory copy, not outrageously convoluted CRTC effects?
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

norecess464

#219
Thanks @cpcitor for your feedback!

QuoteI'm very surprised that the debug window does not offer a "continue" button.
When the debugger is displayed, press the space bar to go to the next instruction, and ESC to close debugger and continue emulation.
Please have a look at the official documentation (scroll down in https://gitlab.com/norecess464/cpcec-gtk ) or Help/Contents directly in the emulator, many details of the emulator (including the usage of the debugger) is exposed there!

Quotethe emulated CPC believes that the space bar (or sometimes the CPC z key) is pressed continuously, while in reality no key is pressed at all.
Yes, I will eventually investigate that. Low priority for now, as it's not blocking anything. Please do not hesitate to report the issue directly in gitlab if you can: https://gitlab.com/norecess464/cpcec-gtk/-/issues

QuoteThe idea is to show a kind of "current instantaneous screen content", as if you could freeze the Z80, preserve memory content and the Z80-writable CRTC register contents, and just show a complete image. In a number of cases (arguably not every case), this could show interesting things, like hints to understand how some effect is made.
I'm not sure to understand your idea? Whatever happens, I don't plan to invest more time in debugging features for now, unless I really need them.
But, please take note you can pause the emulator at any monitor scanline. Then, you could debug step-by-step from there and see how CRTC registers evolve. That's how I would proceed to understand what is happening with CRTC.

QuoteHey, the huge bouncing-towards-the-viewer scroll text in "still rising" is made with Z80-based memory copy, not outrageously convoluted CRTC effects?
It's probably a mix of Z80 copy to update the scroll content, and use of the CRTC to stretch the lines vertically. The challenge is to sync them both ;-)
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

norecess464

#220
cpcec-gtk: minor enhancements done around the extended monitor feature (download: https://gitlab.com/norecess464/cpcec-gtk/-/releases). The most notable progress is that the boundaries of the visible monitor are now displayed (also in the debugger), as shown in this video.

https://youtu.be/GYyHaHZAiS4
My personal website: https://norecess.cpcscene.net
My current project is Sonic GX, a remake of Sonic the Hedgehog for the awesome Amstrad GX-4000 game console!

cngsoft

Several bug reports and new tests later, here's a minor patch, this year's first:



20220104 -- minor patch improving the interruption flags of INIR/INDR/OTIR/OTDR (following new tests from Ped7g) and the timings of LDI/LDD/LDIR/LDDR on CPC (the eighth and ninth tests of Roudoudou's SPLIT.CPR pass at last) and fixing a bug in the CRTC1 logic (nonzero R5 in Chany and Grees' NPS cracktros: reported by Norecess464) and another one in the Spectrum interrupt counters (accepting an IRQ stops its counter on Pentagon: reported by Azesmbog). Configurable CMOS/NMOS Z80 style in ZXSEC.
(if you can't see the banner right now my server is currently offline)

cngsoft

#222
Several bug reports later, another minor patch:



20220108 -- minor patch fixing bugs in the ZX Dandanator (the demo "Possible" accidentally triggers the RESET command even without cartridges) and the Pentagon IRQ (it's short yet continuous rather than long and stoppable, following new tests from Azesmbog). Video filters are more CRT-like (suggested by Md0) and lightgun logic is linked to their triggers to avoid false positives.

(if you can't see the banner right now my server is currently offline)

cpcitor

Quote from: cngsoft on 22:33, 05 January 22Several bug reports and new tests later, here's a minor patch, this year's first:

What is the prod in the screenshot? Is it interlaced video?

Anyway, repository updated: https://github.com/cpcitor/cpcec
Had a CPC since 1985, currently software dev professional, including embedded systems.

I made in 2013 the first CPC cross-dev environment that auto-installs C compiler and tools: cpc-dev-tool-chain: a portable toolchain for C/ASM development targetting CPC, later forked into CPCTelera.

cngsoft

Quote from: cpcitor on 23:05, 09 January 22What is the prod in the screenshot? Is it interlaced video?

Anyway, repository updated: https://github.com/cpcitor/cpcec
Thanks for the update :-) The demo is "Possible", https://www.pouet.net/prod.php?which=90547 ; the screenshot combines almost all the video filters (pxiels, scanlines, interlace, blending) in ZXSEC.
(if you can't see the banner right now my server is currently offline)

Powered by SMFPacks Menu Editor Mod