JavaCPC Desktop is a brand new Amstrad CPC emulator.
It is based on JEMU (http://sourceforge.net/projects/jemu (http://sourceforge.net/projects/jemu))
and is an extremely improved release from JavaCPC 6.7.
JavaCPC Desktop is designed to be used on Windows systems only,
but maybe can run also on other systems, but a few features will be missing then.
JavaCPC is no freeware any longer!
It's new license is "Donationware".
What does this mean?
--------------------
- JavaCPC and all of it's contents are free, and are allowed to be shared.
- It's available sources are not complete but you are allowed to use them.
- If you register JavaCPC, please also think about a little donation.
(JavaCPC consumes much time in it's development)
- The only legal downloadplace is: http://sourceforge.net/projects/javacpc/ (http://sourceforge.net/projects/javacpc/)
or also http://cpc-live.com (http://cpc-live.com)
- Other people who wants to offer JavaCPC on their own webpages, please contact me
What is new, what can I expect as a JavaCPC 6.7 user?
-----------------------------------------------------
JavaCPC Desktop is a completely rewritten emulator, which offers you a big spectrum of apps and tools.
It comes with it's own desktop!
The tools and apps:
-------------------
- Integrated Z80 Assembler: Feel free to create your own programs in Z80 Assembler. Compile them directly into the CPC's ram.
- Improved Debugger
- Virtual Keyboard: You cannot find your key you need? Use the virtual Keyboard then.
- Alarm Clock: A simple alarm clock, which reminds you when you have something else to do.
- YM-Control: Record and playback your own YM files.
- Manage DSK (Windows only!): Copy files from your PC on a DSK or vice versa.
- Audio Capture: Record your favourite CPC sound as WAV file.
- TapeDrive: A fully controllable virtual tape drive. Supports CSW, CDT, WAV and MP3
- JavaCPC Paint: Paint your own screens in normal mode or also as Overscan pictures. Convert existing images to CPC format.
(Supported import-Formats: PCX, TGA, BMP, PNG, GIF, JPG, SNA)
- Mandelbrot: A simple app to paint Mandelbrot fractals directly on the CPC screen.
- Tiled Mapeditor: You can use it to create game maps etc...
- Poke Finder: A simple tool to find PEEKS and POKES to cheat in games.
- Calculator: A scientific calculator which understands string input with brackets etc...
- WebBrowser: A webbrowser
- GameBrowser: Don't waste your time by downloading hundreds of CPC games without checking them! Just load them directly into the emulator and play them.
- Virtual Floppy: A little thingie to see what your virtual disc drive does.
- SubPopRadio: Listen to the best CPC-tunes available in WWW!
- JavaCPC Chat: Chat with other JavaCPC users all over the world. (Experimental)
- Favourites: Add and load your favourite DSK, CDT or SNA files with a few mouseclicks only!
- DSK2CDT: Simple filetransfer to copy files from an existing DSK file on a new CDT file (Windows only!)
- And much more!!!
Further questions?
Feel free to contact me
Download:
Here...... (http://cpc-live.com/javacpc/list.php?dir=Release)
Quote from: Devilmarkus on 11:05, 14 August 11
JavaCPC Desktop is a completely rewritten emulator, which offers you a big spectrum
:o
Quote... of apps and tools.
Quote from: Devilmarkus on 12:29, 14 August 11
JavaCPC Desktop is a completely rewritten emulator, which offers you a big spectrum ... of apps and tools.
En français, ça donne :
JavaCPC Desktop est un émulateur complètement réécrit, qui vous offre un large spectre... d'applications et d'outils.
Ca n'a rien avoir avec l'ordinateur Spectrum !
Quote from: Kékidi on 17:57, 14 August 11
En français, ça donne :
JavaCPC Desktop est un émulateur complètement réécrit, qui vous offre un large spectre... d'applications et d'outils.
Ca n'a rien avoir avec l'ordinateur Spectrum !
Yeah, i know, that was just a little joke :D
The beginning of the sentence was so that it was like the rewritting of the emulator was so important that it is now a Spectrum Emulator :laugh:
Sure, I also could emulate the Spectrum (JavaCPC is based on JEMU, which emulates several 8 bit systems)...
But I don't want to ;)
Executioner is doing a great work with JEMU and I don't want to steal his "complete emulation core" to emulate the other models, too...
(I already have stolen his CPC emulation :D )
Good, that he cannot read, what I'm writing... *hiding now...*
You could add it as an easter egg somehow ;)
Interesting are the stats for my new release:
Mostly downloaded by French users... (30%)
http://sourceforge.net/projects/javacpc/files/JavaCPC%20Desktop/JavaCPC_Desktop_1.0.release.zip/stats/map (http://sourceforge.net/projects/javacpc/files/JavaCPC%20Desktop/JavaCPC_Desktop_1.0.release.zip/stats/map)
I guess it must have been sleeping when I downloaded it. :laugh:
Well this is pretty cool. Gonna have a play about a bit more later but at moment I'm having a quick go at the paint program. Nice work.
Thankyou :)
Aunt Edit:
Paint can fail when:
- You don't use the standard ROMs
- You use expansion ROMs
- You first opened Overscan Paint and then you open Normal Paint... (Dunno why here is a glitch)
Best: Setup CPC 6128 default ROMs and restart JavaCPC when you want to change the format...
I donated 3 euros (I know it ain't much but I'm unemployed). What's weird is that while Paypal showed the correct 'postal address' after I donated, the Paypal receipt that got emailed to me shows an address I haven't lived at in TEN frickin' yeeeears. I can't find this in my Paypal account settings at all and come to think of it I didn't even have Paypal back then. I was tediously writing & posting cheques for another couple of years. Trying to search through all of Paypal at moment looking for an explanation.
:) Thank you!
(I'm unemployed, too, and I know how hard it is...)
Short info:
New key-combi is available, when a DSK is in drive 0:
Instead of CTRL + small enter key:
ALT + small enter key (Who don't have a small enter key, use "End" key, both work here) = Boot DSK in DF0 ;)
JavaCPC 1.0c is an additional update.
You can install it from JavaCPC's menu: "Help -> Check for updates".
What's new?
- Java Joystick library added. Should work with your gamepad now.
When done, it asks you for the 2 fire-buttons.
Press them on your joypad in order.
To reset this settings, use menu: "Settings -> Reset Joystickbuttons"
It's important that you have the joystick translation enabled and that you don't use the "Alternative Joystick control".... (This is set properly by default!)
Edit: When the update fails (JavaCPC cannot copy the required libraries), make sure you run JavaCPC.exe with admin privilegues...
After all libraries have been copied, you can restart it later without admin rights!
(Win-7 has strange ways sometimes to give the proper fileaccess-rights)
Working absolutely fine for me on Windows 7 using a PS3 sixaxis joypad. Have been playing Switchblade and Stryker & The Crypts of Trogan for the past 20 mins testing it out.
Hello,
the update installs correctly but when i launch JavaCPC it stops abnormaly (just after the "hammer" logo).
I'm under Win7.
If i rename JavaCPC.jar.-656364981.bak to JavaCPC.jar it runs again (but with the old 1.0 version of course)
Any ideas ?
Yes we encountered that problem, too...
It happened, when no suitable controller is connected....
I updated JavaCPC so just check for updates again ;)
If JavaCPC does not startup, try this:
- Double click "Update.jar"
- If this does not help, put a .bat file in same folder. Content:
java -jar Update.jar
- If THIS still does not help, send me a PM for a direct download link ;)
(Sometimes a System.exit(0); is not the best solution) :-\
Quote from: Devilmarkus on 19:41, 17 August 11
Yes we encountered that problem, too...
It happened, when no suitable controller is connected....
I updated JavaCPC so just check for updates again ;)
If JavaCPC does not startup, try this:
- Double click "Update.jar"
- If this does not help, put a .bat file in same folder. Content:
java -jar Update.jar
- If THIS still does not help, send me a PM for a direct download link ;)
(Sometimes a System.exit(0); is not the best solution) :-\
Well done Devilmarkus ;)
It works fine with the new 1.0c "update.jar" file.
Thx a lot.
Here's a short video I just captured... Dunno if you are able to see that I used a gamepad here...
I am also not the best Zynaps-player ;)
http://cpc-live.com/gamepadtest/ (http://cpc-live.com/gamepadtest/)
Heh, I still keep playing about with the paint program and importing my CPC-style graphics such as my Cosmic Prison Commando stuff into it just to see it working :P
Scre(a)mshots please ;)
Ok if you want. Made it a link rather than post image directly cos it's large.
http://carnivac.co.uk/temp/javacpc01.png (http://carnivac.co.uk/temp/javacpc01.png)
Now, this looks amazing ;)
I really want this game for CPC ;)
Quote from: Gryzor on 09:07, 15 August 11
You could add it as an easter egg somehow ;)
I could add a C64 emulator as rotten egg ;)
New update 1.0h:
- Z80 supports MEMPTR register now
- Fix in Java-version validation should make it easier to run it also on not supported Java versions....
- Many fixes in Paint (See more here: http://www.cpcwiki.eu/forum/index.php?topic=2600.0 (http://www.cpcwiki.eu/forum/index.php?topic=2600.0) )
Just let JavaCPC check for updates ;)
Quote from: Devilmarkus on 00:48, 23 August 11
New update 1.0h:
- Z80 supports MEMPTR register now
- Fix in Java-version validation should make it easier to run it also on not supported Java versions....
- Many fixes in Paint (See more here: http://www.cpcwiki.eu/forum/index.php?topic=2600.0 (http://www.cpcwiki.eu/forum/index.php?topic=2600.0) )
Just let JavaCPC check for updates ;)
Yeah, tried update and activated autoupdate, seemingly it doesn't do anything.
Perhaps you blocked Java/JavaCPC to access the internet?
I updated the download package on my website:
http://cpc-live.com/javacpc/list.php?dir=Release (http://cpc-live.com/javacpc/list.php?dir=Release)
The emu is v.1.0h now.
Also: I don't know how your PC config is. To make sure your Update works, run JavaCPC.exe with admin rights.
Or create a update.bat with the following content:
java -jar update.jar
then run this with admin rights.
It depends on where you installed JavaCPC.
I have it inside a read-/writeable folder where I can access it also without admin rights.
Running it always with admin rights is also no good solution on Windows 7! Drag & Drop will not work then...
Important: If you used a BETA (before official release of 1.0) the update will not work!
You need at least the first official release 1.0 to run the update...
Important info for users, who want to use the Synthetica Styles:
You can copy the Synthetica libraries into the LIB\ Folder.
JavaCPC will find them and add the styles to desktop settings.
You then need to enter your name and the license key. (You can also abort that but then the style will remind you always, that you use a non-licensed version of it)
The following files need to be copied to LIB\ :
(http://cpc-live.com/synthetica.png)
You can get Synthetica here: http://www.jyloo.com/synthetica/ (http://www.jyloo.com/synthetica/)
A non-commercial private license is free.
(A commercial or non-private license costs money and because I did not get enough donations for that, I removed the Synthetica styles)
When installed, you can enter your license code like this:
(http://cpc-live.com/synt2.png)
(http://cpc-live.com/synt3.png)
The key is installed proper when you see this message:
(http://cpc-live.com/synt1.png)
Quote from: Devilmarkus on 11:04, 23 August 11
Perhaps you blocked Java/JavaCPC to access the internet?
Nope, even I know how to deal with PCs a bit. But when I find the problem, I'll tell you.
BTW.: @ the French and Spanish JavaCPC users:
Does the "Localize System ROMs" feature work ok for you?
(You should get your localized System ROMs for 464 and 6128 OS ROMs and also your localized keyboard layout.)
Quote from: Devilmarkus on 12:42, 24 August 11
BTW.: @ the French and Spanish JavaCPC users:
Does the "Localize System ROMs" feature work ok for you?
(You should get your localized System ROMs for 464 and 6128 OS ROMs and also your localized keyboard layout.)
It works like a charm in 1.0h
Major release to version 1.1!
Many bugs (which had not been reported during the beta-phase) were the reason why I decided to release version 1.1 today.
What has changed?
- Z80 emulation core improved. MEMPTR register fully emulated now,
some small bugs fixed.
LDI, LDD fixed.
- JavaCPC Paint: Many bugfixes and improvements.
- Debugger: MEMPTR register info and IM status added.
- YM Player overhauled
- JavaCPC Expansion ROM updated
- Joystick libraries and joypad emulation added.
- Replaced annoying dialog when drag & drop is used to load a DSK
- Display improvement for SuperPAL filter (faster now)
- Logic bugfixes in emulation core
- several smaller bugfixes
- PPI bugfix (Storing of SNA fixed and also PPI info in debugger is correct now) Thanks to TFM for finding this bug!
Download:
http://cpc-live.com/javacpc/list.php?dir=Release (http://cpc-live.com/javacpc/list.php?dir=Release)
http://sourceforge.net/projects/javacpc (http://sourceforge.net/projects/javacpc)
Or use the update function... But: users, who want to use JavaCPC expansion ROM should update this ROM, too:
http://cpc-live.com/javacpc/list.php?dir=Expansion%20ROM (http://cpc-live.com/javacpc/list.php?dir=Expansion%20ROM)
(http://cpc-live.com/debugger1.1.png)
Many thanks for that new release, your product is very pleasant tu use (after the hardware one for sure)
I just have a request : I'd like to know if there's any script available for Gamebase cause i'd like to use JavaCPC with Amstradmania database ?
Don't know what you mean actually...
But you can launch JavaCPC.exe with parameters.
Example:
JavaCPC.exe -help
Result:
(http://cpc-live.com/javacpc_commands.png)
But perhaps, with your help, I could fiddle out a few more scripts...
Example to start SymbOS from command line:
JavaCPC.exe -desktop yes -wallpaper "fantasy.jpg" -stretch no -cpctype SYMBOS -drivea "SymbOS.DSK" -driveb "Sym-Apps.DSK" -autotype "|SYM" -amsdos yes
Important:
When you want to RUN"DISC.BAS" you need to replace the "" by "
Example:
-autotyte "RUN"DISC.BAS""
Compared the Z80TESTS suite between WinApe and JavaCPC...
I have no idea why, but in WinApe all tests fail.
(I took the video with increased emulation speeds but also without speeding the emus up the results are the same!)
JavaCPC:
http://cpc-live.com/z80tests (http://cpc-live.com/z80tests)
WinApe:
http://cpc-live.com/winapez80tests (http://cpc-live.com/winapez80tests)
We are not sure if the test for bit n,(HL) has a bug in Z80 tests or not... It fails on every emulator.
Sadly i cannot transfer the DSK to 3" :(
But perhaps someone here could do that and post us the report?
I attach the Z80 test suite once more:
RUN"Z80TESTS"
Quote from: Devilmarkus on 12:22, 26 August 11
Don't know what you mean actually...
But you can launch JavaCPC.exe with parameters.
Example:
JavaCPC.exe -help
Result:
(http://cpc-live.com/javacpc_commands.png)
But perhaps, with your help, I could fiddle out a few more scripts...
Example to start SymbOS from command line:
JavaCPC.exe -desktop yes -wallpaper "fantasy.jpg" -stretch no -cpctype SYMBOS -drivea "SymbOS.DSK" -driveb "Sym-Apps.DSK" -autotype "|SYM" -amsdos yes
Important:
When you want to RUN"DISC.BAS" you need to replace the "" by "
Example:
-autotyte "RUN"DISC.BAS""
Amstrad Mania is a
Gamebase database that permits to launch many CPC games with different emulators (it permits to play music, viewing screenshot or manuals)
(http://img849.imageshack.us/img849/3615/gamebase.jpg)
In fact it's a
GEMU Script for JavaCPC that i'm looking for.
This is an example for CPCE :
"
;---------------------
;Display Loading Notes
;---------------------
If Key_Message CONTAINS(*)
Show_Message(%message_value%)
End If
;------------------------------------
;Autorun ON/OFF
;------------------------------------
If Key_AUTORUN CONTAINS(NO)
Set_INI_Value(1||CPCE||AUTORUN||0)
Else
Set_INI_Value(1||CPCE||AUTORUN||1)
End If
;--------------------------
;TAPES
;--------------------------
If GameType CONTAINS(cdt)
Set_INI_Value(1||CPCE||ROM_TYPE||0)
Else
Set_INI_Value(1||CPCE||ROM_TYPE||2)
End If
;------------------------------------------------------------------------
;Insert Multiple Disks into Drive A and B (if not Mult-Disk Eject Drive B)
;------------------------------------------------------------------------
If NumGameFiles > 1
Show_Message(You will need to swap / flip disks manually)
End If
;--------------------
;Insert Gamefile in Emulator
Add_CLP(%gamepathfile%)
;------------------------------------
;Send keyboard strokes command "|CPM"
;------------------------------------
If Key_loadtype CONTAINS(cpm)
Run_Emulator_Send_Keys([4]{C123}cpm{Enter}||50)
ElseIf Key_loadtype CONTAINS(*)
Run_Emulator_Send_Keys([4]%loadtype_value%{Enter}||50)
Else
Run_Emulator()
End If"
My basic wish is to launch :
JavaCPC.exe -df0 "disk.dsk" -bootdrive df0 through that script
Oh... Ok...
You should contact Loic Daneels.
He's coding these scripts...
http://www.cpc-power.com/gamebasecpc/index.php?page=accueil (http://www.cpc-power.com/gamebasecpc/index.php?page=accueil)
I mean to remember he once coded that for JavaCPC, too, but am not sure...
Thanks a lot :)
Quote from: Devilmarkus on 13:48, 26 August 11
Oh... Ok...
You should contact Loic Daneels.
He's coding these scripts...
http://www.cpc-power.com/gamebasecpc/index.php?page=accueil (http://www.cpc-power.com/gamebasecpc/index.php?page=accueil)
I mean to remember he once coded that for JavaCPC, too, but am not sure...
Is "AmstradMania" really the same thing as Loic Daneels' "GamebaseCPC"?
Quote from: remax on 14:20, 26 August 11
Is "AmstradMania" really the same thing as Loic Daneels' "GamebaseCPC"?
Perhaps not... but AFAIK Loic uses the same program. And when someone can help you, He is ;)
Quote from: Devilmarkus on 14:22, 26 August 11
Perhaps not... but AFAIK Loic uses the same program. And when someone can help you, He is ;)
You're right about the fact that it use the same program and that he can help but i wonder if he knows about this gamebase.
I hope it is just two parrallel project and that there is no "rip off".
At least, one thing i can say is that i'm nearly sure that GBCPC is far more up-to-date, so i suggest subone to use it instead of Amstrad Mania
.
Quote from: remax on 14:27, 26 August 11
At least, one thing i can say is that i'm nearly sure that GBCPC is far more up-to-date, so i suggest subone to use it instead of Amstrad Mania
You're right : GBCPC is certainly more up-to-date but his size is so huge !! 11 Gb :o where Amstradmania is less than 2 Gb with 4487 disks and 2087 tapes.
I just launch the download process ... 11 Gb for a 1 Ko script, that'll permit me to test GBCPC btw ;)
Quote from: phi2x on 14:46, 26 August 11
For the bit n,(HL) instruction, it's the only one that is exposing the MEMPTR register.
Well I think (not sure) this test will also fail on a real CPC...
So I hope someone can check the DSK on a real CPC, too, run the tests and write a little report here...
.
Quote from: phi2x on 15:15, 26 August 11
Possible, but I doubt it.
The reputation of bit n,(HL) as being the hardest z80 instruction to emulate is not out of thin air IMHO.
You know: DAA is the mid-game boss for z80 emulation noobs ; bit n,(HL) is the endgame boss for the pros :D
Well until we don't have a real report, its all useless ;)
Arnoldemu adapted the Z80 test suite from a ZX Spectrum program.
It's possible that some things were ZX specific and have not been adapted 100% accurate...
(The first Z80 test suite also crashed on CPC so he removed a few tests)
I just read you added "Joypad Emulation" in the 1.1 version.
Does it mean we can map joystick keys on the keyboard ?
How ?
Well you can connect your joypad to your PC.
Then JavaCPC should show you that it has found a joystick and asks for firebuttons.
http://cpc-live.com/gamepadtest/ (http://cpc-live.com/gamepadtest/)
If you use a non-compatbile joystick, its not listed I think...
but with my 08/15 joypad it works fine...
The NEC Z80 (Spectrum) is not the same as the Zilog Z80 (CPC), so we need somebody who can test it on real hardware.
Quote from: Devilmarkus on 15:40, 26 August 11
Well you can connect your joypad to your PC.
Then JavaCPC should show you that it has found a joystick and asks for firebuttons.
http://cpc-live.com/gamepadtest/ (http://cpc-live.com/gamepadtest/)
If you use a non-compatbile joystick, its not listed I think...
but with my 08/15 joypad it works fine...
Ok but is it possible to change the default joystick key mapping : numpad keys it seems ?
No thats not possible ;)
(For joystick not)
But you can change this config during the emu is running to Q,A,O,P keys...
Not very helpful then when you want to use a real joypad...
So, make sure, that you dont use the alternative joystick mapping...
But also when you use a laptop without num-keys, the joystick should be mapped to the right CPC signals ;) (numpad keys)
I do this:
When joystick signal for "up" is detected, I press the numpad-8 key. (until joystick up is disabled)
The same for the other directions.
So it doesnt matter if your PC has numberpad keys or not...
Markus, that test also fails on my real CPC 6128!
BIT n, (HL) : C8B0 failed
-expected 6208
I can also post a screenshot if you dont' believe me: :)
(http://home.arcor.de/mdoege/cpcfail.jpg)
Quote from: Devilmarkus on 12:55, 26 August 11
Compared the Z80TESTS suite between WinApe and JavaCPC...
I have no idea why, but in WinApe all tests fail.
(I took the video with increased emulation speeds but also without speeding the emus up the results are the same!)
JavaCPC:
http://cpc-live.com/z80tests (http://cpc-live.com/z80tests)
WinApe:
http://cpc-live.com/winapez80tests (http://cpc-live.com/winapez80tests)
We are not sure if the test for bit n,(HL) has a bug in Z80 tests or not... It fails on every emulator.
Sadly i cannot transfer the DSK to 3" :(
But perhaps someone here could do that and post us the report?
I attach the Z80 test suite once more:
RUN"Z80TESTS"
Quote from: Morn on 16:49, 26 August 11
Markus, that test also fails on my real CPC 6128!
BIT n, (HL) : C8B0 failed
-expected 6208
I can also post a screenshot if you dont' believe me. :)
So it's not my emulation... cool!
The other tests pass or do they only pass in JavaCPC? :D
Edit: @arnoldemu: yould you change the bit n,(HL) that it should expect C8B0?
I think then anything is fine...
(http://cpc-live.com/z80flagtests2.png)
- How to listen to MP3 with JavaCPC:
(Fun video, don't take it too serious)
http://cpc-live.com/mp3/ (http://cpc-live.com/mp3/)
Quote from: Devilmarkus on 16:51, 26 August 11
So it's not my emulation... cool!
The other tests pass or do they only pass in JavaCPC? :D
Well, the MEMPTR test led to a garbled screen eventually and locked up the machine. Don't know why that is. But the first test seemed fine.
Quote from: Morn on 17:06, 26 August 11
Well, the MEMPTR test led to a garbled screen eventually and locked up the machine. Don't know why that is. But the first test seemed fine.
Seems to be a real hardware difference to an emulated CPC... Funny...
Does your CPC have a Zilog or NEC Z80?
(http://i225.photobucket.com/albums/dd289/dailycostume/archive/petergriffinlikeness.jpg)
Is there a way to find out CPU type without opening the case?
It's a late-model Schneider I think, if that helps. I believe when the Amstrad-Schneider deal fell through, the remaining Schneider hardware was sold at rock-bottom prices at German retailer Quelle, and that's where my dad got it for me.
Quote from: Morn on 17:16, 26 August 11
Is there a way to find out CPU type without opening the case?
No ;) (Perhaps with bit n,(HL) :D )
.
So I guess this means we have Zilogs, not NECs in our CPCs...
Quote from: Devilmarkus on 16:51, 26 August 11
- How to listen to MP3 with JavaCPC:
(Fun video, don't take it too serious)
http://cpc-live.com/mp3/ (http://cpc-live.com/mp3/)
Holy shit ... that's so fun ;D
Quote from: Devilmarkus on 15:17, 26 August 11
Well until we don't have a real report, its all useless ;)
Arnoldemu adapted the Z80 test suite from a ZX Spectrum program.
It's possible that some things were ZX specific and have not been adapted 100% accurate...
(The first Z80 test suite also crashed on CPC so he removed a few tests)
A few of the tests, BIT n,(HL) included need the test code to be in the correct position. ;)
It is not so gives a bad result, because I removed some tests.
The crash comes because the OUT tests are probably not good for CPC and need modifying.
Quote from: Devilmarkus on 12:55, 26 August 11
Compared the Z80TESTS suite between WinApe and JavaCPC...
I have no idea why, but in WinApe all tests fail.
(I took the video with increased emulation speeds but also without speeding the emus up the results are the same!)
JavaCPC:
http://cpc-live.com/z80tests (http://cpc-live.com/z80tests)
WinApe:
http://cpc-live.com/winapez80tests (http://cpc-live.com/winapez80tests)
LOL, WinApe doesn't seem to pass
a single one of all those tests!
Quote from: arnoldemu on 17:36, 26 August 11
A few of the tests, BIT n,(HL) included need the test code to be in the correct position. ;)
Well, I think my conversion from DSK to CDT did correctly convert the AMSDOS header to a tape header, so memory location should have been identical.
Quote from: Morn on 17:38, 26 August 11
LOL, WinApe doesn't seem to pass a single one of all those tests!
Yes, but my understanding is, it's a couple of bits in the Flag-register that are not emulated 100% correctly.
Quote from: Morn on 17:41, 26 August 11
Well, I think my conversion from DSK to CDT did correctly convert the AMSDOS header to a tape header, so memory location should have been identical.
...and just in case it isn't, please tell use the correct loading address so we can specify it explicitly!
I don't remember, how do we check that our registration is taken into account?
EDIT : OK, i saw it in the console :)
Quote from: remax on 18:10, 26 August 11
I don't remember, how do we check that our registration is taken into account?
EDIT : OK, i saw it in the console :)
To safe your registration settings from being deleted (By uninstalling or deleting your JavaCPC settings dir):
Look for JavaCPC.ini.
It's in C:\Users\username\JavaCPC\...
Or for Windows XP it's in C:\Documents and settings\username\JavaCPC\...
There check the JavaCPC.ini and copy these entries:
usercode=Dxxx-Cxxx-4xxx-Cxxx
usermail=xxxxxx@xxxxxx.com
username=Markus Hohmann
Simply keep these infos in a safe place.
When lost you just paste them again into JavaCPC.ini.
Edit:
You can always check if JavaCPC is registered by choosing in menu:
Help -> Register JavaCPC
When the info is grey (not editable) it's registered.
(Reg. works only when Desktop is choosen!)
Great to see how JavaCPC evolves, guess it's the most acurate CPC-Emu I've ever been using. And I really appreciate the enhanced debugging features. JC is the only emu the can be used to check the 8255 PIO. Thank's a lot Markus!!!
It's really worth to get some donations :-)))
Quote from: TFM/FS on 18:44, 26 August 11
Great to see how JavaCPC evolves, guess it's the most acurate CPC-Emu I've ever been using.
*cough* :D The FDC emulation is very poor :( The CRTC and GA emulation could be better...
Indeed: The Z80 seems very accurate now.
Quote from: TFM/FS on 18:44, 26 August 11And I really appreciate the enhanced debugging features. JC is the only emu the can be used to check the 8255 PIO. Thank's a lot Markus!!!
It's really worth to get some donations :-)))
:)
Thanks for info about registration.
What is "Low Performance" switch?
Did you noticed that you have two "Observe performance" switch? One in Settings and the other in Options>System and the two seems to be independants.
Well "Low performance" disables a few display features.
Humm I have a double option :D
(The menu needs a huge cleanup... Perhaps I'll cleanup it in 2056 or so) ;)
The "Observe performance" looks how many frames are skipped during a while and resyncs the CPC if it means it's necessary.
After too many resyncs, it turns to Low Performance.
Dont know if its any useful ;)
Quote from: Devilmarkus on 19:12, 26 August 11
The "Observe performance" looks how many frames are skipped during a while and resyncs the CPC if it means it's necessary.
After too many resyncs, it turns to Low Performance.
Dont know if its any useful ;)
Ok so when "Low Performance" is checked, "Observe performance" isn't useful.
For the double option, i just hope it doesn't launch the process two times if you have both checked it.
Another thing : When you play PacMan, it seems that when you quit it, it doesn't terminate the application (you can hear when the ghost kill you even after using the cross in the upper right). I think we miss a "Quit" option in each app to be sure it doesn't stay in memory.
Right... No app. quits.
Thats not very simple to realize because I don't want to use too much memory...
The pacman is a few kb only...
Quote from: Devilmarkus on 19:49, 26 August 11
Right... No app. quits.
Thats not very simple to realize because I don't want to use too much memory...
The pacman is a few kb only...
Ok, so when we are rough on frame, it is better to restart!
Not really a big thing, but good to know!
Quote from: MaV on 17:42, 26 August 11
Yes, but my understanding is, it's a couple of bits in the Flag-register that are not emulated 100% correctly.
WinAPE core Z80 emulation code is written in x86 assembler and uses the flags of the x86 (SAHF and LAHF instructions). The extra bits (including the so-called MEMPTR) don't operate the same on the x86 and so WinAPE's current (original) flag handling code doesn't emulate them, and hasn't been updated to do so (there would be a slight performance hit). JavaCPC and JEMU Z80 cores have hand-coded flag emulation, including the MEMPTR emulation which I assume Markus has added from my latest JEMU Z80 core. The latest incomplete version should be close to 100% accurate when finished.
Yes the MEMPTR I adapted from the actual sources in JEMU.
Had to change a few things but it works fine (I hope) :D
Will try to run ZEXALL, too, today... (Did not run it yet because it's very slooooooooooooooooow)
Quote from: Executioner on 03:05, 05 September 11
WinAPE core Z80 emulation code is written in x86 assembler and uses the flags of the x86 (SAHF and LAHF instructions). The extra bits (including the so-called MEMPTR) don't operate the same on the x86 and so WinAPE's current (original) flag handling code doesn't emulate them, and hasn't been updated to do so (there would be a slight performance hit).
Interesting fact. Would the performance hit even be noticeable?
Quote from: MaV on 10:09, 05 September 11
Interesting fact. Would the performance hit even be noticeable?
Probably not on modern processors. The rendering/CRTC/sprite/audio code accounts for a much higher percentage of processing time than the Z80 emulation now, and on most modern systems the CPU usage for WinAPE is very low (I get a max of 7% on one core on my 1.73GHz i7). I'll fix up all the flags as part of the next release (not that it causes problems with any known software except z80 tests).
Quote from: Executioner on 02:31, 07 September 11
I'll fix up all the flags as part of the next release (not that it causes problems with any known software except z80 tests).
Yep, fixing these parts is purely academical, for all I know. Still good to see that the Z80 can be emulated 100%.
Quote from: MaV on 23:01, 07 September 11
... Still good to see that the Z80 can be emulated 100%.
Well, for me - in a way - it's sad ???
Quote from: TFM/FS on 01:46, 08 September 11
Well, for me - in a way - it's sad ???
Aw! :( Does it help, if I say that I still prefer the real thing? Nothing beats the 40 pin DIP on a green PCB with lots of metal lines going here and there. So it's a bit slow by today's standards, but with the Z80 running at 4MHz you still can afford the instruments to watch the pins change state and see the little bugger come to life. Try that with a GHz processor. :D
Well, one million instructions per second is not slow. Slow are todays PCs, even if their CPUs are supposed to be 100.000 times more quick than the Z80. But if I use some apps on the CPC it's still more quick that the PC. My oldest, but still true example is: Go and write a letter! (And since all PCs are heavily upgraded, we will use a CPC with Protext in ROM and a RAM disc).
Well, at least not a single CPC Emulator is capable to emulate the famous HD20 hard-disc (which wouldn't be hard to do btw.).
IMHO the CPC has a right to exist, as long it can't be emulated (including all expansions) for at least 99.7% - IMHO!
Update to version 1.2 is available!
- Bugfixes in Z80 Assembler
(1 bugfix is very important! The bug let JavaCPC slow down much, so this update is really recommended for users who use the assembler!)
- Z80 Assembler now restores the opened files (Until you close them or all tabs)
- Minor bugfixes in CPC emulation
- Improved .TAP loading speed when 464 roms are choosen (Loads faster than from DSK!)
- Wallpapers can be shown tiled now
- Favorites Browser update (Added "Remove unused entries" -> removes all non-findable files from Favourite browser, better GUI)
- Few more improvements
Update can be done starting JavaCPC and let it check for updates. (If not automatic check is enabled)
Quote from: Devilmarkus on 16:08, 18 October 11
(1 bugfix is very important! The bug let JavaCPC slow down much, so this update is really recommended for users who use the assembler!)
That happens to me always, even without using the assembler. If I start JavaCPC then it has 50 fps, ander 10 seconds it 40 fps, after half a minute it's 20 fps and after one minute its less than 20 fps.
Since the update it's all good!!!! Thanks!
Thanks DevilMarkus, good update.
JavaCPC Desktop 1.3 is available!
New: 3d accelerated, curvatured display.
You can enable/disable the 3d screen in Video-Settings.
Texturesize is 1024x512 pixels.
Optional: Disable Small Texture (Increases the Texturesize to 1024x1024 pixels, but is slower)
You need to restart JavaCPC after changing the texturesize!
If you run out of speed in 3d display, you can also enable "Frameskip" in the video settings. (This is not stored in the settings!)
No fullscreen-mode available when in 3d! But you can stretch the emulator output to the size you wish.
Just run the "Check for updates" option from Help-menu...
Little Emulator-update to 1.3d:
- The aspect ratio for the 3d display should be right now in almost all cases.
- New Updater! (It now can download all additional files like libraries, dll, etc)
- Online-Installer
Just let JavaCPC check for updates! That's all!
(New Updater starts after first check! So don't wonder, it then downloads necessary files)
Or check the 2nd attachment here! It contains the complete JavaCPC-Online Installer.
Update 1.4a available.
New:
- Native keytranslation for German Keyboards (Type in what you want and it will appear as it is on your keyboard)
Example: When you press the "+"-key it will appear the "+" symbol on the CPC screen.
- Bugfix in Autotype routine
- Small CRTC bugfix
- Less coffee used this time
(http://cpc-live.com/native_keytranslation.png)
Here you can see the native keytranslation. I pressed all keys on my keyboard in order. first without shift, then with shift, and some with alt_gr.
Only additional key is the "Ü" key. It still provides @ or | as it's a simplier handling of this key.
The § returns the british pound symbol, as the CPC don't have a § key ;)
Thanks for the update :)
Well, for gaming the native keytranslation is not very useful, but for coders...
Quote from: Devilmarkus on 09:51, 16 November 11
Well, for gaming the native keytranslation is not very useful, but for coders...
Indeed.
.
(http://www.musicproductionnatural.com/wp-content/uploads/2011/02/inception-yodawg.jpg)
Why not executing javascript in java?
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class RunScriptFileDemo {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
FileReader reader = new FileReader("yourFile.js");
engine.eval(reader);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/* File: yourFile.js
*
function add(a, b) {
c = a + b;
return c;
}
result = add (10, 5);
print ('Result = ' + result);
*/
.
Quote from: phi2x on 13:52, 21 November 11
And why not executing JavaCPC on the Javascript made JVM while executing that JVM on this Javascript engine that is embedded in Java? 8)
Well because I also wouldn't execute CPCBox in a window of JavaCPC's desktop, which is executed by JVM in Javascript, which runs in a popup-display of CPCBox what is embedded in html5 :P
My mind just exploded.
You guys know exactly who to use up all ressources, go and get a job at Micro$oft, they will kiss your behinds :laugh:
Welcome in the wasteland! :P
(I stay with my original CPC and expansions meanwhile).
JavaCPC Desktop is online again!
You can download the latest version here:
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Have fun!
Just tried to login with my reg details from July 2010, and it seems they no longer work! Damn gotta register again :D
Quote from: Shredder11 on 17:40, 29 January 12
Just tried to login with my reg details from July 2010, and it seems they no longer work! Damn gotta register again :D
Humm the download for JavaCPC should work for everyone... ;)
But welcome back! :D
Release 1.5 is out!
[attach=2]
I fixed several bugs.
Important bugfixes:
- Palette is restored now when you load a snapshot
- Chat changed to a php chat (same Chat than on java.cpc-live.com)
- 3d Display had no drag & drop listener, added this, too.
Important update:
- Gamebrowser update: It shows the games on java.cpc-live.com (Also the demos are available)
Please let JavaCPC check for updates or visit it's downloadpage here:
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Little update:
(no full release, but you can use JavaCPC's update function)
I improved the built-in Z80 assembler.
Added 2 new internal commands:
create_dsk "a:mydisk.dsk",data,40 -> creates a blank disk image in drive DF0. formats available: data, system, 40 or 80 tracks
add_loader "myloader.bas" -> creates a little BASIC loader for the file you want to assemble
Combined with the already existing command:
write direct "a:myfile.bin" -> writes the assembled program to dsk in given drive
Demonstration:
http://cpc-live.com/create_dsk/ (http://cpc-live.com/create_dsk/)
The DSK-File will be stored in the same path, where your ASM file is located.
(If you coded an ASM file from scratch and did not save it yet, the DSK is located in JavaCPC's root folder.)
JavaCPC Desktop 1 Update 6a is out.
(As online-update!)
Changed the AY emulation slightly.
(You should be able to hear more now...)
Update to version 1.6b is available!
New feature: A user-defineable CPC palette.
(Works only with the JavaCPC Expansion ROM which is included)
How it works:
- Make sure, your video settings have "CTM 644 Color" set selected.
- Enable the JavaCPC Expansion ROM (In ROM settings)
- Enter from BASIC:
|INK,<0-31>,<R>,<G>,<B> - sets INK x to given R,G,B values (0-255 each value)
|RESINKS - restores the original CPC palette
Video:
Erstellt von Camtasia Studio 7 (http://cpc-live.com/userinks/)
Is it like the Plus colors?
Does it also work on a real CPC (guess not, ok).
How does it work?
It's better than on the CPC+.
Because 16 mio. colours are possible.
But it only works emu-internal.
No CPC compatibility here.
It works via an unused port, which is read, when the expansion ROM is active.
And it affects the GateArray's palette directly. (In an emulator, the GA-palette is pre-defined... But here I can change the values...)
...maybe Bryce is able to find some kind of magical hardware "switch" to enable those options?
Another demo:
Soft resets (CALL 0 or CTRL + F9) don't reset the colours.
Hard reset (CTRL + SHIFT + F9) also reset the palette.
Erstellt von Camtasia Studio 7 (http://cpc-live.com/userdef_inks)
It's impossible to create some hardware which can do the same, as the colour values in the GateArray chip are fixed values.
On the KC-Compact it's possible to change them by a hardware writer... (They are stored in a kind of eprom)
And the CPCPlus?
It already has a palette of 4096 colours.
Even these are fixed.
For the CPC+ exist tools like B-ASIC, which provide RSX commands to change the plus palette from BASIC.
(Don't ask me, how... Google for B-ASIC ;) )
Little demonstration for JavaCPC's virtual tape drive:
Tape record & playback function in JavaCPC - YouTube (http://youtu.be/fB5C_xaQe6g)
;)
Update 1.7 was alive too short, to post it here.
It has a keyboard fix for the German "Native Keyboard-translation" (Translate PC keys as they are, neat for coders)
I also fixed a bug, which disabled the ROMs when you activated the status-panel.
But Update 1.7b is important! Especially for Windows-PC.
A bug did not copy the internal resources into C:\Users\<name>\JavaCPC so that the internal Apps didnt work.
(It's funny, that noone found this bug by using the affected applications like Samp2CDT or DSK Util or so....)
There is also a fix in finding the path where JavaCPC is located. Important for computers, where the emulator cannot find the internal ROMs.
Quote from: Devilmarkus on 15:46, 25 May 12
Little demonstration for JavaCPC's virtual tape drive:
Tape record & playback function in JavaCPC - YouTube (http://youtu.be/fB5C_xaQe6g)
;)
Hehe. I didn't even really understand what that video was going to about before I clicked play and as I did click a match of multiplayer Uncharted 3 on my PlayStation 3 was about to begin so I rushed over there and since I have both the PS3's TV and the laptop wired to the same headphones (so I can play PS3 while listening to tunes through the headphones to help block out neighbour noise) I was wondering what the heck all this static and beeping noises were about amongst the Uncharted battle sounds. I even got killed in it cos I was busy unplugging the headphones and plugging them back in trying to figure out where the noise was coming from. It was this video. Which was a big relief cos for a while I thought my PS3 was going weird. :)
I found an easter egg in my folder ;D
So, did you enable it? :D
Didn't found how to do it... (even if i'm quite sure of what it does)
Well un-egg it and start JavaCPC with Desktop....
Perhaps an extra icon appears :D
[attach=2]
Hehe... Java800
Yeah... ;) You found it :D
In Atari 800 emu use F1 to access the emulator's menu... (Its a 1:1 adaption of the in C written Atari 800 emulator...)
F2-F5 = silver Atari keys...
What's about the 800XL? I don't know how to handle the 800 (never touched one).
Well the emulator loads the XL-Roms by default.
You can configure it with F1 (emulator system menu)
Because TFM has persuaded me, here's a little update:
1.7d
- Bugfix in internal resource check
- SAMdisk Version 3.4, last updated 14th August 2012 integrated (Used by the ManageDSK DiskUtil)
- Bugfix when defining joystickbuttons (You had been forced to define always 2 buttons, even, when your gamepad/digital joystick only has 1 button) Fixed that. You now can press ESC to skip button 2.
- Bugfix in Z80 emulation (minor)
- Minor performance fixes
- Minor fixes in the integrated Z80 Assembler
- Little improvements in Paint (Added a slider which pre-converts the incoming image to less colours first, ordered dithering added)
How to get it?
- Launch JavaCPC
- Click in the menu: "Help" -> "Check for update"
Next JavaCPC Release will be able to read amiga IFF,ILBM and PBM formats, too, and import them into JavaCPC Paint:
(http://cpc-live.com/iff1.png)
(http://cpc-live.com/ilbm1.png)
These images were directly imported. No need to find PNG sources for them... :)
Do you think it would be possible to use multi screen configuration ?
I have a CRT and a LCD. I prefer having the screen output to the CRT and the desktop to the LCD, but as far as i know i can't do that on Java CPC...
I don't think so.
No idea how to tell a single Java app. to use several windows on several monitors.
Sorry :-\
Java doesn't need to know that it's on a different monitor. You just need to launch the screen output in a separate window, the user can drag it wherever he wants then.
Bryce.
This works with JavaCPC. When you disable the Desktop ;)
Yeah but you lose all ability to control the screen via the desktop :(
True....
But I dont want to exclude the emulator window off the desktop
Perhaps I can add this as extra feature...
Need to check that.
That would be great :)
Time to do a little remax-TFM-update:
- Fixed: Handling for SPARtan bit in upcoming FutureOS
- Added: Undock / Dock feature to the embedded CPC panel on the desktop
How to undock / dock the emulator frame:
Just click the pink icon in the right lower corner of the Desktop-Panel. [attachimg=1]
To dock the display back, just click it again, or close the undocked window.
It's not stored in the settings!
Perhaps later, when remax tested this feature on his PC with 2 monitors, I will store it in the settings, too
How to get the Update?
Simple:
- Open JavaCPC
- Use the menu: "Help" -> "Check for Update" and follow the dialogs.
[attachimg=2]
Edit: Oh, I forgot to say, that you now can also import Amiga ILBM / IFF / PBM pictures to paint.
No idea, if is useful, but I implemented that :P
Works great :
(http://img685.imageshack.us/img685/8559/sanstitre1be.png) (http://imageshack.us/photo/my-images/685/sanstitre1be.png/)
Uploaded with ImageShack.us (http://imageshack.us)
If i can abuse a little, being able to remove the title bar and it would be perfect :D
I don't know, what this little window is...
Could you resize it and tell me if it has a title?
Also: what happens when you move the emulator output to the other monitor, gain its focus and press ALT + Enter? (Fullscreen)
(Edit: Fullscreen only works with 2d display, not with the 3d panel)
Ok, I Have to do more test but the behavior of fullscreen is a little hard to understand.
First of all, this little window is what remain when you try to go fullscreen in 3d mode then try to go back from fullscreen (of course it has no impact to the real display, i talk about just activating or no the option). It is totally blank and you can't close it.
When you disable 3D mode, things are strange. Sometimes it goes to full screen, sometimes not, but one thing is sure : when it goes to fullscreen, it goes over hte screen that has the desktop, and not over the screen in which the initial screen was displayed (not totally surprising, as as it is a windows, it can be on both screen at the same times, so i don't think there is a way to know over which screen it is).
On second tests : Now, it seems to always go to fullscreen. Perhaps the problem about going to fullscreen was because i had just tested going to fullscreen in 3D.
Anyway, you'd better disable Full Screen Option when 3D is activated, that would avoid bugs. Alt+Enter is deactivated, but the option in "Monitor" is still there. Even better, totally remove this option cause the more i test it, the more bug prone it seems if you do things "out of the road".
Yeah the fullscreen sometimes makes weird things.
I disabled it completely now, when in 3d mode.
The problem for the "Undecorated" frame is, that you cannot undecorate it after shown once.
So I had to code very weird routines to realize that.
The Frame is undecorated now and shows a blue border when you move with your mouse around it.
The upper part in this border is "moveable" -> Drag & drop the window whereever you want.
The lower right corner is the "resize" corner -> Drag it to resize the window.
The upper right corner is the "close" corner. -> click it and the emulator frame will re-dock into the desktop.
Its hard to say if you are able to move this new window now onto your 2nd monitor.
But, if not, you can move the desktop's window onto the 2nd monitor, I hope.
Demo video:
Erstellt von Camtasia Studio 7 (http://cpc-live.com/undocktest)
Need to do a few more testings then I can upload this update.
Don't forget the "take full screen" option (the second one when the title bar is displayed).
By the way, it seems that the "keep display proportion" in "monitor" doesn't do anything, so perhaps, you can entierely remove the Monitor tab.
Keep display proportions is important, when you use JavaCPC without Desktop ;)
Working on an "Internal Filesystem" what will make life easier for coders etc...
You'll soon be able to access files on your PC's harddrive with RSX commands.
(http://cpc-live.com/syntaxterror.png)
First look:
JavaCPC -> Internal Filesystem test (http://cpc-live.com/filesystest/)
Before leaving for today:
- Cleaned up the messy code around autotyping directories etc...
- All text messages are sent through the emulated CPC directly...
- No more stupid ' - chars :D
Result:
JavaCPC FileSystem (http://cpc-live.com/filesystem)
Coded a little guide, too:
(http://cpc-live.com/fsystem.png)
I think I can release it @ end of this week...
(If someone wants...)
Cool stuff!
Update to version 1.7f is available:
- Added JavaCPC Internal Filesystem. (Just activate the JavaCPC ROM Expansion)
- Changed port handling for JavaCPC expansion ROM (To avoid interferrences with Digiblaster)
Just let JavaCPC check for updates... ;)
Hi Markus,
Any idea what would stop this running under Linux? The JavaCPC desktop starts up, console shows text output, emulated display starts (remains black for a second) then everything core dumps.
Ubuntu 12.10 (I think):-
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-0ubuntu1~12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
[/size]steve@Studio:~/javacpc$ ./JavaCPC.jar
loaded 8 user settings
Checking resource files...
File not found...
java.lang.NullPointerException
at jemu.ui.CheckResources.checkFile(CheckResources.java:139)
at jemu.ui.CheckResources.checkResources(CheckResources.java:84)
at jemu.ui.Main.main(Main.java:367)
loaded 17 rom settings
loaded 9 desktop settings
ROMs are disabled: false
java: /build/buildd/openjdk-6-6b24-1.11.5/build/../pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c:750: Java_org_classpath_icedtea_pulseaudio_Stream_native_1pa_1stream_1flush: Assertion `stream' failed.
Aborted (core dumped)
I ended up running the Windows EXE under WINE, this resulted in other issues but at least worked :)
Sure.
The answer is in your log:
Quotejava: /build/buildd/openjdk-6-6b24-1.11.5/build/../pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c:750: Java_org_classpath_icedtea_pulseaudio_Stream_native_1pa_1stream_1flush: Assertion `stream' failed.
Pulseaudio is crap.
I will ask someone later, who uses Linux, and where JavaCPC works fine, what Java config he has.
Yup - I noticed this just after I posted it. I missed this last night - I was very tired ... this is my excuse :)
Regarding JavaCPC - Having all those tools available in a single 'desktop' (and platform independent too) is awesome!
Quote from: TCMSLP on 15:19, 13 November 12
Yup - I noticed this just after I posted it. I missed this last night - I was very tired ... this is my excuse :)
No worries ;)
QuoteRegarding JavaCPC - Having all those tools available in a single 'desktop' (and platform independent too) is awesome!
Yeah but tools like DiskUtil or some others will not work under Linux.
I am already working on a Java-DSK-Filesystem but making very slow progress...
A small bug report :
* The Copy Key don't seem to work, at least in Azerty, either directly or on the VK.
* Orion prime is stuck on asking the Disk 2 in the 3'5 french version (after about 25% of the game)
1) COPY is on the "Insert" key to avoid Windows - Menu behaviour.
2) Use the 3,5" disk image ;)
Quote from: Devilmarkus on 22:31, 13 November 12
1) COPY is on the "Insert" key to avoid Windows - Menu behaviour.
Oh! I was used to ALT. It's more logical. Anyway gonna test that.
EDIT : OK It works. It still don't work on the VK though.
Quote
2) Use the 3,5" disk image ;)
Well... that's what i meant when i said i was using 3,5 french version.
Hummm yes sorry.
Disable the "Fast disc emulation" please in Settings -> Drive settings.
When disabled, the FDC is a bit more accurate. (FDC in JavaCPC is like a VW Beetle in space...)
Quick update to v1.8:
Added the RSX commands:
|TYPE,"<filename">
and
|HEXTYPE,"<filename>"
-> dump text or other file to screen
Internal Fileystem: Dump files (http://cpc-live.com/ifs_type/)
Also changed the update program. It now does the update automatically, when started
The internal emulator FS is really neat and can be quite useful; so much so that I think every emulator should have one... time for a new standard? :)
At least it would be possible.
I can post my Java source and binaries (asm)
The binaries just work like this:
-> every command has a command byte, this is sent first, followed by the parameters.
-> The java routine reads the port and waits for last byte written: 0x0FF
-> When last byte is written, the command is executed internally in the emulator core.
-> Strings are send back via reading the port. Char by char. With a routine which also waits for a last byte.
I am using ports 0x0FFF0 - 0x0FFFF as IO device for the filesystem.
Quote from: Devilmarkus on 23:41, 13 November 12
Hummm yes sorry.
Disable the "Fast disc emulation" please in Settings -> Drive settings.
When disabled, the FDC is a bit more accurate. (FDC in JavaCPC is like a VW Beetle in space...)
Still doesn't work :'(
Thats strange... I finished the game using JavaCPC...
Well, if i can finish the game without going to level 4, i might do the same ;D
... Hey now it works. Without changing anything, just relaunching my save. Perhaps a bug in the game...
Well Orion Prime finished.
Just a little bit of FDC Overrun... that was that that seemingly prevented from loading the level 4 (i had to insist a little more).
It doesn't do that often... Only at times.
JavaCPC ROM update.
In the JavaCPC exp. ROM v1.3 has been a bug.
The |COPY command did not work.
This is fixed in v1.4 now (Thanks to SyX, who helped me here)
I also added a new command |FLIP.
What are theses commands good for?
|COPY,<bank> where bank is &C0,&C4,&C5 etc... -> Copies a screen from &C000 to the wanted ram bank
|PASTE,<bank> -> Copies the screen from choosen bank back to C000
|FLIP -> Does a screen flip between 2 screens @ 4000 and C000 with 25hz. (JavaCPC Paint can create such screens, or you can also use your own screens)
Limitation: - Both screens must have the same screenmode and palette
Examples for |FLIP, when the video settings are set to "De-Interlace":
(https://cpc-live.com/for_syx.png) (https://cpc-live.com/for_syx.png)
(https://cpc-live.com/for_syx2.png) (https://cpc-live.com/for_syx2.png)
Attached ROM: (Unzip to location where JavaCPC is installed\system\cpc\rom)
(Or run "Update.jar" -> it then automatically installs the new ROM)
Working on the BASIC de-tokenizer... (View BASIC files directly from ram)
I found out that a few routines were bad in my "BasList" tool, so I will update it soon.
But I thought it could also be a nice feature for an emulator: Always being able to see what happens in BASIC ram.
So I coded a realtime-BASIC-viewer for testings.
Later I will use it in the debugger and you'll have to list the basic RAM manually (Or perhaps semi-automatically with breakpoints? Will think about it...)
Here you can see a preview of realtime BASIC listing:
Realtime BASIC-Listing (Detokenized BASIC-RAM) (http://cpc-live.com/realtime_basicview/)
Fiddling @ the BASIC debugger...
Don't get BASIC breakpoints working (yet), seems that BASIC has its own laws ;)
But this is how the LIST window looks like:
[attach=2]
Working on a breakpoint and on a realtime BASIC TRACE feature:
JavaCPC BASIC debugger -> TRACE test (http://cpc-live.com/basictrace/)
JavaCPC -> Basic Debugger test (http://cpc-live.com/basicdebugger/)
Nice work, and neat features - you're almost building a CPC BASIC Dev environment that uses JavaCPC Desktop as the runtime platform.
Next step - edit your BASIC in the Dev environment rather than the CPC. Multiple breakpoints with debug step through, etc. Hotspot detection so you can identify regions of code that could do with some assembly...
yeah, and how about a separate window for watching variables with its value. Would be cool. 8)
When someone can tell me where and how to localize variables in RAM (and also how read them out), why not?
Fiddling on a screen-to-ASCII copy feature.
With this you will be able to capture the text contents on screen as text or/and html.
Here are a few examples:
http://cpc-live.com/startscreen.html (http://cpc-live.com/startscreen.html)
http://cpc-live.com/maxam.html (http://cpc-live.com/maxam.html)
http://cpc-live.com/parados.html (http://cpc-live.com/parados.html)
http://cpc-live.com/parados2.html (http://cpc-live.com/parados2.html)
Video of realtime screen-to-text:
JavaCPC - Real screen to text OCR test (http://cpc-live.com/ascii_cpc/)
It will be useful to copy screen contents to e.g. clipboard.
Limitation: You can only capture what is on screen. And only standard font is supported.
Direct text output:
PARADOS - Version 1 1 ©1997 QUANTUM Solutions Program by Richard Wilson
┌―――――――――――――――――――――――――――――――――――――――――――――――――――――――┬――――――――――――――――――――――┐
│███████████████████████████████████████████████████████│█████Information██████│
│███████████████████████████████████████████████████████│ │
│███████████████████████████████████████████████████████│Drive : │
│███████████████████████████████████████████████████████│Format : │
│███████████████████████████████████████████████████████│User :All │
│███████████████████████████████████████████████████████│Files :*.* │
│███████████████████████████████████████████████████████│ │
│███████████████████████████████████████████████████████│No. of files : │
│███████████████████████████████████████████████████████│Used entries : │
│███████████████████████████████████████████████████████│Total entries : │
│███████████████████████████████████████████████████████│ │
│███████████████████████████████████████████████████████│Free space : 0K │
│███████████████████████████████████████████████████████│Used space : 0K │
│███████████████████████████████████████████████████████│Total space : 0K │
│███████████████████████████████████████████████████████│ │
│███████████████████████████████████████████████████████│Tagged files : │
│███████████████████████████████████████████████████████│Tagged space : 0K │
│███████████████████████████████████████████████████████│ │
│███████████████████████████████████████████████████████│Free buffer :552K │
│███████████████████████████████████████████████████████│Total buffer :552K │
└―――――――――――――――――――――――――――――――――――――――――――――――――――――――┴――――――――――――――――――――――┘
MAIN : Attributes Copy Erase Filespec Move Rename Tag Un-tag
JavaCPC v1.9 is ready.
So start your JavaCPC and let it check for updates.
New: Debugger -> Added a simple BASIC-debugger.
CPC-Screen-To-ASCII feature implemented. (You'll find it in menu -> Edit or by pressing shift+F11)
Huh... who closed this thread?
Thanks Gryzor, for seeing that and re-opening ;)
Still fiddling on JavaCPC ;)
In progress:
A Fonteditor to edit the font directly in ROM:
Erstellt von Camtasia Studio 8 (http://cpc-live.com/chareditor/)
Who wants to check a result, try this instead of OS 6128 Lower ROM:
http://cpc-live.com/halloween.rom (http://cpc-live.com/halloween.rom)
Not 100% finished yet, but will finish it soon... ;)
Also in progress:
Overhaul of the integrated YM Recorder/Player GUI:
Erstellt von Camtasia Studio 8 (http://cpc-live.com/lcd_test/)
So, who has any ideas, what to add/change else, please post it here :D
Nice work!
JavaCPC Desktop 2.0a is out!
Because of lacking time and motivation, I decided to roll-out version 2.0a.
What is new?
- Built-in "direct font editor" -> you now can edit the system rom's font. (It also opens a user defined font)
You can also store modified fonts as headerless binary or into a new lower-OS-ROM file.
Press ALT + F11 to open it. (Or check in menu -> Edit -> Open Font Editor)
- A wallpaper is set by default now. 4 wallpapers are available now. (1920x1080 pixels) You of course can also set your own wallpaper.
- The menubar now also shows up, when desktop is "Expanded"
(http://cpc-live.com/fonteditor.png)
What has changed?
- Several minor bugfixes.
- Bugfixes in the internal paint application
- Rewritten code to posterize images (Turn your favourite photo/image into a CPC-pixelized image keeping the original proportions)
- Internal java console is now turned off by default. (You can still enable/disable it in the preferences)
You can run an update or download 3 different files:
- JavaCPC_Desktop_2.0a.zip -> Complete emulator in a ZIP archive
- JavaCPC_2.0a_Setup.zip -> Complete emulator as a setup file
- JavaCPC_Desktop_Online_Setup.zip -> Only the online installer, put it somewhere you want to install JavaCPC inside, and launch it.
For those of you, who run the update:
- When the update runs first time, the updater self-closes.
- Launch JavaCPC.exe again then, and a 2nd update starts, which updates the Update.jar itself and also the last required files.
This happens, because in this release, the updater changed, too.
You can find the files here:
http://cpc-live.com/data/index.php (http://cpc-live.com/data/index.php)
Have fun!
Yay! Time to change the thread's title or start a new one, don't you think?
Hope people will make and share some fonts...
Well dunno if a new thread is needed. I'm still happy with this one.
Forgot to mention about the new YM Player/Recorder GUI:
Example video
JavaCPC's new YM Player GUI (http://cpc-live.com/ymplayer/)
Great job done Markus!
JavaCPC 2.0b rolled out.
You can use the internal update function to get your latest copy.
I added the GameMap Ripper.
How to activate it?
- First, enter the debugger, when your game has been loaded and shows the playscreen.
- Open the GFXViewer by clicking on the icon shown in the screenshot:
[attach=2]
- In the GFXViewer define start address, and tile size by changing width and height.
- Make sure, the first tile is visible in the upper left corner
- Make sure, it's not zoomed, if required, enable "No Auto Zoom" -> This can slow down the gfx creation but is necessary for the GameMap Ripper.
[attach=3]
- If a game has less than 256 tiles, click onto the first tile in the upper left corner with your left mousebutton and then click on the last visible tile with your right mousebutton. This marks the tiles area.
- Now click "Generate Map" - A new window will open up.
[attach=4]
- Here you now can play around by changing the address and the map width and height.
- Rev. X and Rev. Y is not working yet so you don't need to use it.
- When you can see your full map , you can click on "Export" and choose a filename for the PNG image.
- An additional textfile is stored, too, which contains the map info.
- Done....
Happy mapping ;)
GREAT!!! :D
I will give a try this afternoon :D
You now can download the full JavaCPC 2.0b release here:
http://cpc-live.com/data/index.php (http://cpc-live.com/data/index.php)
Long time has passed since I released JavaCPC Desktop v1.0 :D
Today I released v2.1.
New: Implemented game mapper (ScreenMapper and GameMapper).
You can create game maps now or from ram, or directly from the CPC screen.
Video:
JavaCPC GameMapper (Screen capturing) (http://cpc-live.com/screenmapper/)
The ScreenMapper is directly accessible from JavaCPC menu and does not need the GFXViewer or the RAM-mapper active.
Just start it, define a rectangle on CPC screen (Click the "Set" button in ScreenMapper, unclick it, when done selecting screen area), and start mapping.
Define screen area is key controlled in CPC display:
- Arrow up -> move rectangle up about 1 pixel
- Arrow down -> move rect. down about 1 pixel
- Arrow left/right -> move rect. left/right about 1 pixel
+ SHIFT:
move rectangle about 8 pixels
- CTRL + Arrows: change rectangle width/height about 1 pixel
+ SHIFT:
change rectangle width/height about 8 pixels
Mapping is key controlled in CPC display:
- CTRL + arrow keys: Append actual screen at choosen direction
- SPACE: Put actual screen to actual position
- DELETE: Remove screen from actual position
- Just arrow keys: Change position
You can use the internal Update function -> Menu: Help -> Check for update
Or you can download the latest version when you follow the link in my signature...
Now... amazing to see! Thinking about it...
I hope the people like the new splash screen :P
Need to roll out an update this evening...
I broke the GFXViewer...
Internal update to v2.2 is available.
I changed the GFXViewer.
Fixed a bad routine to show the tiles and also added the possibility to export single tiles as .PNG, then you can edit them with tools like Paint, and re-import into a single Cell-view.
(For more informations about this, just ask me)
Simply let JavaCPC check for updates.
The full download will be available tomorrow I think...
Also added:
A 64bit executable to launch JavaCPC properly on 64bit Java distributions on Windows PCs.
Quote from: Devilmarkus on 22:00, 27 August 13
A 64bit executable to launch JavaCPC properly on 64bit Java distributions on Windows PCs.
Excellent! That was needed! :)
Quote from: TFM on 22:46, 27 August 13Excellent! That was needed! :)
As I don't use 64bit Java, I can't tell you how it works. My last status was, that JavaCPC works as crap on 64bit Java.
But I thought, it'd be useful to have a 64bit executable, too...
The version 2.2 is now also available as full package download.Just check the link in my signature.
And another bugfix update is available: v2.2a
Thanks to MiguelSky for reporting this weird bug.
You can get it using the internal update function.
Bugfix: Removed flooding JavaCPC directory with xxxxxxx .SCR files
Added: VaraDOS rom (Patched Parados rom which supports Vortex format)
Little update to version 2.2c:
- Fixed a few UI-bugs. (Especially in the Z80 Assembler interface)
- Fixed autoboot function to get keyboard functionality back, after booting a game/app. (ALT + END = boot DF0)
- Fixed the debugger: Added the (very important) info for IFF1 and IFF2:
(http://cpc-live.com/fixed_debugger.png)
You can get the latest version by using the update function in JavaCPC.
Download will follow the next days.
JavaCPC Desktop v2.3 is out.
Most important news:
- Some changes for the GFXViewer:
- You now can change the CPC's palette on the fly (Double click on a INK inside the CPC-Palette display @ bottom of GFXViewer's window) Thanks to MacDeath for the idea.
- I implemented a GIFMaker into the GFXViewer. You now can create very easy and quick animated GIFs from most beloved game sprites. Thanks to McKlain for the idea.
- A bugfix in automatic version control, which caused JavaCPC Desktop to freeze when was enabled
- Removed the icon for Push'N'Pop radio due it's offline and put a shortcut-icon to the GFXViewer directly.
- Embedded Death Sword 128k to play directly ;) (Added an icon to the desktop)
- Some minor bugs and glitches removed
Download it here: CPC-Live.com - Schneider / Amstrad CPC Webseite (http://www.cpc-live.com/data/)
Or just let it check for updates.
Happy New Year!!!!
Quick guide to create GIFs:
- Make sure, first sprite is in upper left corner in GFXViewer
- Left click on it once
- Right click on last sprite to select a range (The Sprites inside the range are grayed out then)
- Click "Create GIF"
In theory that's all you need to know.
Oh and the sprites you select must be in a range... Would be too much work now to select single sprites only...
The GIFMaker should be self explaining.
To change transparent color, just click on a color in the GFXViewer window's palette.
Sorry, quickly fixed a bug...
Please re-download...
For those of you, who already downloaded it or have checked for updates: You just need to replace this file:
http://cpc-live.com/javacpc_update/JavaCPC.jar (http://cpc-live.com/javacpc_update/JavaCPC.jar)
JavaCPC version 2.4 is out.
Due lack of time and motivation the only new feature is, that I fixed the "Create DSK" function, which allows you to create an empty DSK file for the selected drive...
Use the internal update function...
That's ok. Bug fixes are important. :) :) :)
I'm really impressed with JavaCPC, normally i used to work in Winape, but the perfect tape emulation with the tape inserted on a real tape deck with the name of the game in it, or the CPCPaint program, that really converts the screens perfectly, yesterday i was trying to convert an image with convimgcpc that fails miserably, doing a bad bad job, but the same image with cpcpaint is perfectly converted almost pixel by pixel!!
@Devilmarkus (http://www.cpcwiki.eu/forum/index.php?action=profile;u=93) you're doing an excellent job with this emulator, only one thing, i tried to load on the assembler an asm program that i'm doing with winape, but javacpc throws 138 errors, perhaps not all the directives that uses winape are compatible with javacpc?
Thanks, Joseman, for your reply :)
JavaCPC's assembler is very simple and mostly Maxam compatible.
But it cannot handle makros or scripts like WinApe.
It also sometimes has problems to parse multiple instructions in one line.
Few people here maybe know, that I'm no assembler coder ;) So, I just made the assembler by learning by doing... (As the whole Emulator is made)
Quote from: Joseman on 02:39, 18 September 14
... i tried to load on the assembler an asm program that i'm doing with winape, but javacpc throws 138 errors, perhaps not all the directives that uses winape are compatible with javacpc?
WinApe has a monolithic structure, it's compatible to MAXAM f.e. but don't expect anything to be compatible to it. Same is true for a lot of good things for good reasons. :)
However, my suggestion is to keep the source compatible to the MAXAM assembler, so it will be most likely understood by most / all emulators.[nb]Well, I don't know in detail, since I use MAXAM on a CPC(-Emulator). That's quick enough, if you activate the emu's "turbo mode" while the assembler runs.[/nb]
And for all the maxam's lovers, there is another option, you can use Maxam II in a commandline CP/M emulator.
Works with CPC emulators too ;) Even if I bought the original Maxam II and I think it's really great I never migrated to it. :)
Sure, but it's more practical and fast to use from a CP/M emulator than from a CPC emulator, when i have sometime i'll try to make a mini-doc for you can see the advantages ;)
Well, don't waste your time ;-) Better you do some coding, that's a jewel then :-D
Honestly, I always thought that MAXAM II is for CPC/Joyce only (like Prowort, Protext for CP/M only runs with CPC/Joyce).
I have an advanced way of loading... I use a memory dump which I load under FutureOS and then I already got everything in the RAM disc. However I didn't use that since quite a while, just starting Maxam and press "trubo" for assembly makes me happy. There are probably 333 more quick ways to go though. :laugh:
How do I use the d-pad on my joypad to play games? The emulator keeps using my left analog stick which is not ideal. The d-pad is registering as them POV things in the controller properties of windows.
Implementing joystick support into JavaCPC was/is a pain in the a....
If you want to play games with proper joystick support, you should try a different emulator ;)
I'm sure the java joystick library only supports analog joysticks/pads.
(I don't even know what a d-pad is ;) )
d-pad means directional pad. The cross shaped bit with the up/down/left/right that all joypads have had since they were first made. The bit you're SUPPOSED to play retro games with, not the analog stick...
And joypad support is kinda broken in WinApe too (character's keep going to the left automatically for some reason) so what, I now need a thiiird emulator just to use a joypad properly?
Maybe even a fourth or fifth... :-X
Quote from: Carnivac on 23:01, 03 October 14
And joypad support is kinda broken in WinApe too (character's keep going to the left automatically for some reason) so what, I now need a thiiird emulator just to use a joypad properly?
Isn't there a calibration routine somewhere in Windows? WinAPE uses the following code to provide analogue to digital conversion:
JoyMidX := (wxMax - wxMin) div 2;
JoyMidY := (wyMax - wyMin) div 2;
JoyDeadX := (wxMax - wxMin) div 4;
JoyDeadY := (wyMax - wyMin) div 4;
JoyLeftX := IMax(JoyMidX - JoyDeadX, wxMin);
JoyRightX := IMin(JoyMidX + JoyDeadX, wxMax);
JoyUpY := IMax(JoyMidY - JoyDeadY, wyMin);
JoyDownY := IMin(JoyMidY + JoyDeadY, wyMax);
then the following to set the keyboard bits:
if wXpos < JoyLeftX then JoyMask := JoyMask and $fb
else if wXpos > JoyRightX then JoyMask := JoyMask and $f7;
if wYpos < JoyUpY then JoyMask := JoyMask and $fe
else if wYpos > JoyDownY then JoyMask := JoyMask and $fd;
if (wButtons and JOY_BUTTON1) <> 0 then JoyMask := JoyMask and $ef;
if (wButtons and JOY_BUTTON2) <> 0 then JoyMask := JoyMask and $df;
Quote from: Executioner on 01:53, 07 October 14
Isn't there a calibration routine somewhere in Windows? WinAPE uses the following code to provide analogue to digital conversion:
I'm using a Dual Shock 3 pad off my PS3, with a driver that makes the laptop think it's an Xbox 360 pad and I've looked in the device settings and for some reason it never asks anything about the sticks in the calibration bit. Which isn't usually an issue since most emulators I use ignore the sticks anyways (altough I've noticed MAME doesn't register any oddities when you try to reassign a button in-game, that control doesn't get automatically taken over by the analog stick as if it were registering being stuck in a direction like Winape is). I'd rather Winape ignored the analog sticks completely and just used the d-pad (in this case the POV functions). It's just a bit frustrating my joypad works on everything but my Amstrad emulators. :/
EDI|T: managed to fix the left stick calibration but it's still not ideal. Analog sticks are just too clumsy to mimic digital control.
I used a program like JoyToKey (JoyToKey - Basic Features (http://joytokey.net/en/overview)) to map keyboard keys to the joypad and it worked...
Quote from: Carnivac on 07:13, 07 October 14
I'm using a Dual Shock 3 pad off my PS3, with a driver that makes the laptop think it's an Xbox 360 pad
What is the driver? I'll try installing it and using one of my DS3s?
IMPORTANT!!!
JavaCPC update version 2.5 fixes a major bug, which appeared since version 2.3 or 2.4!!!!
These versions ALWAYS stored screenshots into C:\\javacpc_temp\ !!!!!
Please check your version by doing an internal update!!!
(menu: Help, Check for update)
Or download the latest version here:
CPC-Live.com - Schneider / Amstrad CPC Webseite (http://cpc-live.com/data/)
Happy new year to all CPC-friends!
And sorry, for this annoying bug, which also kept the performance very low :(
Thanks for the Update! Great way to start the new year!!! 8) :)
Ok, I wouldn't call that a "major bug" :)
Well it was a major bug!
When you find 5fps instead of 50 and your harddrive is full of gigabytes of screenshots...
I know exactly what you're talking about! :P
JavaCPC update 2.6 is out!
Now features Dual-YM emulation (As seen on TotO's PlayCity boards)
How to enable:
Configuration -> Misc. -> PlayCity (Where you can enable Digiblaster and Amdrum emulation, too)
Download here:
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Or let JavaCPC check for updates....
JavaCPC internal update 2.6b is out!
(Please let JavaCPC check for updates)
Changes and fixes:
- --SNA command line parameter added
- Bugfix in BASIC debugger (TRACE and STEP through BASIC lines should work proper now (in theory))
- EX HL,DE opcode added to integrated Z80 assembler (Before only EX DE,HL worked)
- some GUI fixes
As info:
All command line parameters here for you:
JavaCPC Desktop 2.6b ©2015 by Markus Hohmann
Commands: | value: | info:
--cpctype <CPC type*> Sets emulated CPC model*
--df0/--drivea <path to DSK file> loads a DSK into DF0
--df1/--driveb <path to DSK file> loads a DSK into DF1
--tape <path to CDT file> loads a tape image
--sna <path to SNA file> loads a snapshot
--bootdrive <df0/df1/tape> Boot choosen drive
--amsdos <yes/no> Put AMSDOS rom?
--crtc <0/1> Sets CRTC type
--autotype <content> 1 line for autotype
--desktop <on/off> Start as desktop or app.
--wallpaper <path to wallpaper> Choose wallpaper
--stretch <on/off> Stretch or center wallpaper
--memory <64/128/256/512> Defines emulated RAM
--monitor <color/green/grey/cpce>
--polarity <on/off> Toggles tape polarity
--help this info
--------------------------------------------------------------
*Possible CPC-models:
CPC464,CPC464T,CPC664,CPC6128,KCCOMPACT
CPC464PARA,PARADOS,FUTUREOS,SYMBOS
Internal JavaCPC update to v2.7al (alpha)
Changelog:
- Register JavaCPC completely removed, because it made too much trouble
- Partial translation included (French, Spanish, German) !!!Still in heavy progress!!!
- Some GUI fixed
- When you check for updates, it now also includes "Alpha" versions, which don't need new version numbers. So you can manually check from time to time for new updates, even if the version number did not change. (Automatic update will ignore Alpha versions in the future)
- Bugfix in Gamebrowser and BASIC autotype This alpha version doesn't cause any known stability problems, because nothing has changed in emulation core, so you can check for updates.
JavaCPC update to v2.8
Download here: https://sourceforge.net/projects/javacpc/ (https://sourceforge.net/projects/javacpc/)
Or here: http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Update from v2.7 to v2.8 changelog:
- Amstrad.eu BDD added (Play games directly from Amstrad CPC for ever : Amstrad.eu (http://www.amstrad.eu) database)
- Bugfix in BASIC autotype and autoboot
- Some GUI changes
- Some parts are partially translated into German, French or Spanish (Translation is still in progress)
JavaCPC update to v2.9 is available!
Update from v2.8 to v2.9 changelog:
- BDD CPC file databases added: JavaCPC Games and JavaCPC Demos
- Z80 turbo mode integrated (Accessible in System configuration)
- Internal ROM font editor improved (Access: ALT + F11)
Download:
https://sourceforge.net/projects/javacpc/ (https://sourceforge.net/projects/javacpc/)
Or
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Or let JavaCPC check for updates...
.
Who is interested in adding a gamebase:
Gamebases are read through an api.php file on the server.
It should feature 3 usages:
api.php?action=detailist -> prints all available files as xml file
api.php?action=detail&id=xxx -> prints info for a selected file as xml file
api.php?action=get&id=xxx -> lets you download file with ID xxx
detailist: a list like this:
[attachimg=1]
detail: a list like this:
[attachimg=2]
get: deliver the file found in media and given ID as binary
JavaCPC doesnt care if you use ID numbers or filenames instead.
Example here:
http://cpc.devilmarkus.de/games/api.php?action=detail&id=cauldron (http://cpc.devilmarkus.de/games/api.php?action=detail&id=cauldron)
.
Quote from: phi2x on 21:25, 07 March 15
XML is so 2005!! ;)
And CPC is so 1984 ;)
.
Quote from: phi2x on 20:53, 07 March 15
Why don't you work with CPC-POWER, sauvegarde du patrimoine de l'Amstrad CPC (http://www.cpc-power.com/) ? They have the best CPC database ever.
Or even a better solution: creating a collaborative database on CPC-Wiki? That would be awesome.
this database is already ultimate, it's really no use to create another one. however, all people can already contribute to this one, contacting the team ;)
Devilmarkus, Kukulcan is a little cold to add CPC power in Java CPC, because he thinks nobody will come on the site and they won't collaborate (to warn about errors in the datasheet for example). However he agrees to try a Beta.
Kukulcan said me than Java CPC should send connection informations to cpc power, in order it will be identified precisely
I think you should add a column in the database GUI in order each game could target the concerned game (datasheet) in cpc power. is it possible ?
Quote from: greatxerox on 11:13, 08 March 15
Devilmarkus, Kukulcan is a little cold to add CPC power in Java CPC, because he thinks nobody will come on the site and they won't collaborate (to warn about errors in the datasheet for example). However he agrees to try a Beta.
Kukulcan said me than Java CPC should send connection informations to cpc power, in order it will be identified precisely
I think you should add a column in the database GUI in order each game could target the concerned game (datasheet) in cpc power. is it possible ?
JavaCPC doesn't send Informations. (Perhaps the fact, that a Java application wants to read files) But we could use a key for api.php e.g.
api.php?action=detail&id=512&key=123456 (where key can be a secret key)
Sure, it's no problem to add a link, too.. (Name, Publisher, Year, Genre, Link)
JavaCPC update 2.9e is available.
Changelog:
- Hotfix in tape emulation, removed a bug, which caused a division by zero in some cases.
- RAM-ROM management rewritten. The emulator doesnt define a new CPC after each ROM change. Just changes the roms, and thats it.
- Added a nice startmenu to "AMSTRAD" logo, when used as Desktop.
- Small resetbutton added to emulator window.
- few GUI improvements for BDD databases. (You now can also search for a game)
Download:
http://sourceforge.net/projects/javacpc (http://sourceforge.net/projects/javacpc)
or:
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
or check for available updates in JavaCPC
Quote from: Devilmarkus on 09:54, 12 March 15
JavaCPC update 2.9e is available.
Changelog:
- Hotfix in tape emulation, removed a bug, which caused a division by zero in some cases.
- RAM-ROM management rewritten. The emulator doesnt define a new CPC after each ROM change. Just changes the roms, and thats it.
- Added a nice startmenu to "AMSTRAD" logo, when used as Desktop.
- Small resetbutton added to emulator window.
- few GUI improvements for BDD databases. (You now can also search for a game)
Download:
JavaCPC Desktop - Java CPC Emulator | SourceForge.net (http://sourceforge.net/projects/javacpc)
or:
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
or check for available updates in JavaCPC
How I can run this in UBUNTU ?
Drop a command file in the folder.
Content should look like:
java -jar JavaCPC.jar -xms1024m
(Like BAT file on PC)
You may also have to set java.library.path (at least this is the case on Arch Linux) or the gamepad library will not be found, e.g.:
java -Djava.library.path=. -jar JavaCPC.jar -Xms512m
Markus, why is JavaCPC 2.9e trying to load a Windows DLL on Linux? (The previous 2.9 version worked fine.)
loaded 55 user settings
Args: -Xms512m
Checking resource files...
Transferred 0 file(s)
loaded 17 rom settings
loaded 9 desktop settings
Mrz 12, 2015 11:51:44 AM net.java.games.input.ControllerEnvironment log
INFORMATION: Linux plugin claims to have found 7 controllers
Num. controllers: 7
Game pad index: 0
Game controller: Logitech Gamepad F510, Gamepad
Num. Components: 18
Found x; index: 11
Found y; index: 12
Found z; index: 13
Found rz; index: 16
Found pov; index: 17
Found A; index: 0
Found B; index: 1
Found X; index: 2
Found Y; index: 3
Found Left Thumb; index: 4
Found Right Thumb; index: 5
Found Select; index: 6
Found Mode; index: 8
Found Left Thumb 3; index: 9
Found Right Thumb 3; index: 10
Too few buttons (10); expecting 12
Rumblers found: 1
Joy found!
1
3
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/javacpc/.\lib\windows\x86\jdic.dll
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at jemu.ui.Desktop.<init>(Desktop.java:1057)
at jemu.ui.JEMU.init(JEMU.java:351)
at jemu.ui.JEMU.main(JEMU.java:1554)
at jemu.ui.Main.launchClassic(Main.java:487)
at jemu.ui.Main.main(Main.java:447)
Quote from: Morn on 11:48, 12 March 15
You may also have to set java.library.path (at least this is the case on Arch Linux) or the gamepad library will not be found, e.g.:
java -Djava.library.path=. -jar JavaCPC.jar -Xms512m
yeap it is stuck into loading because it uses a windows library and also uses a windows path as well
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /home/kilon/Downloads/JavaCPC/.\lib\windows\x86\jdic.dll
Kilon, here is the old 2.9 file that works:
https://github.com/mdoege/javacpc-backup/archive/master.zip (https://github.com/mdoege/javacpc-backup/archive/master.zip)
Quote from: Morn on 12:25, 12 March 15
Kilon, here is the old 2.9 file that works:
https://github.com/mdoege/javacpc-backup/archive/master.zip (https://github.com/mdoege/javacpc-backup/archive/master.zip)
thanks but still cant load, here is the log
java -Djava.library.path=. -jar JavaCPC.jar -Xms512m
loaded 6 user settings
Args: -Xms512m
Checking resource files...
Transferred 0 file(s)
loaded 17 rom settings
loaded 9 desktop settings
ROMs are disabled: false
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event0): Failed to open device /dev/input/event0 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event1): Failed to open device /dev/input/event1 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event10): Failed to open device /dev/input/event10 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event11): Failed to open device /dev/input/event11 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event12): Failed to open device /dev/input/event12 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event2): Failed to open device /dev/input/event2 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event3): Failed to open device /dev/input/event3 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event4): Failed to open device /dev/input/event4 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event5): Failed to open device /dev/input/event5 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event6): Failed to open device /dev/input/event6 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event7): Failed to open device /dev/input/event7 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event8): Failed to open device /dev/input/event8 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Failed to open device (/dev/input/event9): Failed to open device /dev/input/event9 (13)
Mar 12, 2015 1:37:15 PM net.java.games.input.ControllerEnvironment log
INFO: Linux plugin claims to have found 0 controllers
No controllers found
No game pad found
Start time: [Thu Mar 12 13:37:15 EET 2015]
executable is true
Avail mem is 404531360
init()
Frequency=1000000, adder=65536
Building tapedrive
Samplerate is 44100hz
javax.sound.sampled.LineUnavailableException: unable to obtain a line
at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.connect(PulseAudioDataLine.java:273)
at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:101)
at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:75)
at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:290)
at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:51)
at jemu.core.device.sound.JavaSound.init(JavaSound.java:77)
at jemu.core.device.sound.SunAudio.<init>(SunAudio.java:40)
at jemu.core.device.sound.JavaSound.<init>(JavaSound.java:46)
at jemu.core.device.sound.SoundUtil.getSoundPlayer(SoundUtil.java:26)
at jemu.core.device.sound.AY_3_8910.<init>(AY_3_8910.java:176)
at jemu.system.cpc.CPC.<init>(CPC.java:796)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at jemu.core.device.Computer.createComputer(Computer.java:101)
at jemu.ui.JEMU.setComputer(JEMU.java:4258)
at jemu.ui.JEMU.start(JEMU.java:1187)
at jemu.ui.JEMU.desktop(JEMU.java:1620)
at jemu.ui.Desktop.<init>(Desktop.java:1016)
at jemu.ui.Desktop.main(Desktop.java:11313)
at jemu.ui.Main.launchDesktop(Main.java:470)
at jemu.ui.Main.main(Main.java:444)
JavaSound: 256 x 2
Line Buffer: 0 for class org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine
java: /build/buildd/openjdk-7-7u75-2.5.4/icedtea-sound/src/native/org_classpath_icedtea_pulseaudio_Stream.c:753: Java_org_classpath_icedtea_pulseaudio_Stream_native_1pa_1stream_1flush: Assertion `stream' failed.
Aborted (core dumped)
For the controller problem: add your user to the input group (or Ubuntu equivalent) so it can access /dev/input/event*
The other bug is PulseAudio. Quit all other apps and start with
pasuspender java ...
Or load a GUI like WindowMaker that does not start PulseAudio.
P.S. And if you get JavaCPC running, you may have to change the audio sample rate back and forth (e.g. from 44k to 22k and back to 44k) in the settings once to get sound.
P.P.S. You can use ps to check whether PulseAudio is running:
$ ps aux|grep pulse
martin 599 0.0 0.2 580828 20512 ? S<l 11:16 0:07 /usr/bin/pulseaudio --start --log-target=syslog
Quote from: Morn on 12:45, 12 March 15
For the controller problem: add your user to the input group (or Ubuntu equivalent) so it can access /dev/input/event*
The other bug is PulseAudio. Quit all other apps and start with
pasuspender java ...
Or load a GUI like WindowMaker that does not start PulseAudio.
no idea how to do those things
I tried
pasuspender java -Djava.library.path=. -jar JavaCPC.jar -Xms512m
pasuspender: invalid option -- 'D'
Quote from: Morn on 13:27, 12 March 15
P.P.S. You can use ps to check whether PulseAudio is running:
$ ps aux|grep pulse
martin 599 0.0 0.2 580828 20512 ? S<l 11:16 0:07 /usr/bin/pulseaudio --start --log-target=syslog
ps aux|grep pulse
kilon 1693 0.5 0.0 448424 7608 ? S<l 10:10 1:27 /usr/bin/pulseaudio --start --log-target=syslog
kilon 7824 0.0 0.0 15948 944 pts/6 S+ 14:28 0:00 grep --color=auto pulse
Yes, apparently pasususpender does not like command line arguments. :(
You can create a shell script to start JavaCPC, e.g. I use
$ cat /usr/bin/javacpc
#!/usr/bin/bash
cd /usr/lib/javacpc
java -Djava.library.path=/usr/lib/javacpc/ -jar JavaCPC.jar -Xms512m
And then I have an alias in my ~/.bashrc:
alias jcpc="pasuspender javacpc" # run JavaCPC with PulseAudio disabled
Quote from: Morn on 13:34, 12 March 15
Yes, apparently pasususpender does not like command line arguments. :(
You can create a shell script to start JavaCPC, e.g. I use
$ cat /usr/bin/javacpc
#!/usr/bin/bash
cd /usr/lib/javacpc
java -Djava.library.path=/usr/lib/javacpc/ -jar JavaCPC.jar -Xms512m
And then I have an alias in my ~/.bashrc:
alias jcpc="pasuspender javacpc" # run JavaCPC with PulseAudio disabled
no I am afraid it still gives me the exact same error and crashes.
Strange, normally you simply get no audio from JavaCPC when PulseAudio is running, but no crashes. (This is with PulseAudio 6.0 on Arch; Ubuntu might have an older version that is causing problems. Can you upgrade PA perhaps?)
When using pasuspender, PA keeps running but is suspended and may still cause some sound issues in JavaCPC.
So like I said, I think your best bet is to install a simple window manager like wmaker, log in to that, check that PulseAudio is not running (don't start e.g. Chrome or PA might get started!), and run javacpc without the pasususpend stuff.
Another option might be uninstalling PulseAudio for now, provided you can force your package manger to skip dependency checks. In Arch Linux I can force-uninstall anything with "pacman -Rdd", but I don't know about Ubuntu.
Oh, and if you disable PulseAudio (either by using another window manager or uninstalling PA), you may have to look for an ALSA mixer, because by default all channels in ALSA are muted. So you need to crank them up first.
Sound on Linux really is an inexhaustible topic. :D
Quote from: Morn on 14:10, 12 March 15
Strange, normally you simply get no audio from JavaCPC when PulseAudio is running, but no crashes. (This is with PulseAudio 6.0 on Arch; Ubuntu might have an older version that is causing problems. Can you upgrade PA perhaps?)
When using pasuspender, PA keeps running but is suspended and may still cause some sound issues in JavaCPC.
So like I said, I think your best bet is to install a simple window manager like wmaker, log in to that, check that PulseAudio is not running (don't start e.g. Chrome or PA might get started!), and run javacpc without the pasususpend stuff.
Bingo!
I upgraded from PulseAudio 4 to PulseAudio 5 and now JavaCPC opens.
It looks like now it throws an exception
Exception in thread "PulseAudio Eventloop Thread" java.lang.IllegalStateException: drain failed
at org.classpath.icedtea.pulseaudio.EventLoop.native_iterate(Native Method)
at org.classpath.icedtea.pulseaudio.EventLoop.run(EventLoop.java:133)
at java.lang.Thread.run(Thread.java:745)
it seriously does not like PulseAudio
its frozen and refuses to quit.
No I dont want to uninstall PulseAudio, I love audio with my Ubuntu thank you very much :D
I also dont want to mess with this Ubuntu install, its my work PC and I have loads of valuable data in it and already Ubuntu gives me hard time with my printer and scanner.
Well, xkill is your friend to kill hung applications!
Yes, PA is a major problem with JavaCPC. To be fair, Minecraft is also a Java app and sound in that works flawlessly with PA, so this must be an issue in JavaCPC.
You will still get audio if you uninstall PA. PA is very useful for audio routing, e.g. some apps to HDMI, others to headphone jack. But multiplexed audio output works just fine with plain old ALSA.
Or you could try OS X because I see in your GitHub bug report (https://github.com/cpcitor/cpc-dev-tool-chain/issues/8) you have that too.
AFAIK, also SUN audio should be integrated in actual Java distributions for Linux, isn't it so?
I know people running JavaCPC under Linux, without any audio problems...
Quote from: Devilmarkus on 15:36, 12 March 15
AFAIK, also SUN audio should be integrated in actual Java distributions for Linux, isn't it so?
Maybe there is a way to revert to plain OSS (I think this is equivalent to Sun audio), but then only one app can use the sound card at a time. Very inconvenient to say the least.
I've tried uninstalling PA and using ALSA and still got some occasional audio glitchiness, whereas everything runs smoothly on Windows on the same machine.
Quote from: Devilmarkus on 15:36, 12 March 15
I know people running JavaCPC under Linux, without any audio problems...
More details about the distro they use, etc. would be useful.
But like I said, I think Minecraft proves that Java can cooperate with PulseAudio in principle. I don't know why JavaCPC so stubbornly refuses. :)
Quote from: Morn on 16:14, 12 March 15
But like I said, I think Minecraft proves that Java can cooperate with PulseAudio in principle. I don't know why JavaCPC so stubbornly refuses. :)
Sure, playing samplefiles should work, without problems, with PA.
But JavaCPC produces sound for itself. (AudioStream) which seems is not working well with PA.
I tested several audioformats. 8,16bit, big endian, little endian, etc... All tests ended in the same result...
OK as far I can tell, for MacOSX i see the same problem with that windows library
but the version that you gave me with that gihub link works fine.
I tried to play deathsword but no key seem to work , I need to setup something ?
I dont care so much about linux , MacOSX is my main platform.
To start Deathsword one need to hit return of space or so, kinda unused. I'm not sure if I remember right though. :laugh:
Quote from: TFM on 17:15, 12 March 15
To start Deathsword one need to hit return of space or so, kinda unused. I'm not sure if I remember right though. :laugh:
yes I have done this, its space to change to mode 1 and enter to start battle. Those work. But I cant control my hero , no key seem to work for him , though enemy attacks me and kills me.
Quote from: Devilmarkus on 16:56, 12 March 15
Sure, playing samplefiles should work, without problems, with PA.
But JavaCPC produces sound for itself. (AudioStream) which seems is not working well with PA.
I tested several audioformats. 8,16bit, big endian, little endian, etc... All tests ended in the same result...
Software synths like Yoshimi (http://sourceforge.net/projects/yoshimi/) work fine with PA. Maybe JavaCPC needs a way to set audio buffer size? A little lag between audio and video would be more acceptable than audio glitches I think.
Did you notice the Windows path problem (http://www.cpcwiki.eu/forum/emulators/javacpc-desktop-1-0-official-release/msg95257/#msg95257) with 2.9e? Please don't delete old versions of JavaCPC from Sourceforge so quickly before the new ones are fully tested on OS X/Linux. :)
Quote from: Morn on 17:37, 12 March 15
Did you notice the Windows path problem (http://www.cpcwiki.eu/forum/emulators/javacpc-desktop-1-0-official-release/msg95257/#msg95257) with 2.9e? Please don't delete old versions of JavaCPC from Sourceforge so quickly before the new ones are fully tested on OS X/Linux. :)
I hope I fixed that (Anyhow: It's funny, that it threw an exception, as I try{} catch (Exception ex){} this feature.
Let JavaCPC check for updates please... (Or launch Update.jar)
I have to say I am very impressed with this emulator. Its the most advanced emulator I ever used , has a tons of things inside it. I loved the database that allows you to download and loads games on the fly.
The Assembler and debugger look very powerful, I am sure they will come handy for learning how to do assembly with CPC. One problem I have , is that even though I can start the Assembler and Hex editor by double clicking the icons of the desktop I cannot do the same by clicking the relevant menu entries . Don't know why and the console does not report any errors.
QuoteI hope I fixed that (Anyhow: It's funny, that it threw an exception, as I try{} catch (Exception ex){} this feature.
Let JavaCPC check for updates please... (Or launch Update.jar)
I launched Updater and it updated to 2.9f but it did not solve the problem.
Quote from: kilon on 21:58, 12 March 15
The Assembler and debugger look very powerful, I am sure they will come handy for learning how to do assembly with CPC. One problem I have , is that even though I can start the Assembler and Hex editor by double clicking the icons of the desktop I cannot do the same by clicking the relevant menu entries . Don't know why and the console does not report any errors.
The menu entries are linked only, when you use it without desktop. Perhaps I link them for desktop, too... Did not check many menu items since I added the desktop.
So this is not really a bug but missing links ;)
By the way, the old JavaCPC 6.7 .jar works perfectly with PulseAudio! Zero audio glitches. My test disk is ACF (http://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=233) with its doody title music as TastefulMrShip would undoubtedly call it. ;)
I've looked a little closer at PulseAudio and JavaCPC 6.7. While 6.7 works, it creates a whole load of unused mono streams (over 30!) at startup. This is in addition to the stereo stream for synthesized output and two mono streams for samples. (You can see all this in pavucontrol.)
The PulseAudio maximum number of streams is 64, so JavaCPC 6.7, even though it uses something like 40 streams or so, stays below that total. JavaCPC Desktop 2.9 however tries to open even more streams, so the limit is eventually exceeded (which you can see in the PA log (https://wiki.ubuntu.com/PulseAudio/Log)):
(1980.361| 0.002) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(1980.365| 0.004) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(1980.369| 0.003) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(1980.374| 0.005) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(1980.381| 0.006) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(1980.502| 0.121) W: [pulseaudio] protocol-native.c: Warning! Too many connections (64), dropping incoming connection.
(...)
So the question is, why does JavaCPC open all these unused streams at startup?
I'd guess because the integrated speech synthesizer. Perhaps each phoneme sample opens one stream?
Will check that...
Yes, it looks like JavaCPC 6.7 creates a mono stream for each sample. There are 33 wav samples in the 6.7 JAR and I counted 34 silent mono streams. So maybe my count was off by one.
JavCPC Desktop 2.9 only seems to have 22 WAVs in the JAR, so maybe you are right and it's the speech synth that causes the extra streams to be created.
I think a simple fix for PulseAudio would be a preference to disable sample loading entirely. Turning disk noises off does not make a difference, you still get all those streams.
Good job Markus ! Keep on please ! :D
JavaCPC update to v2.9g...
Update from v2.9e to 2.9g changelog:
- GUI improvements for BDD databases, CPC-Power added, but no database is available yet!
- RAM-Management rewritten and 4MB RAM expansion added
- Fixed faulty start of JavaCPC on non-Windows OS (Hopefully)
- Internal samples will not playback when non-Windows OS is detected
Download: You know the download locations, don't you?
Ok, one is here:
https://sourceforge.net/projects/javacpc (https://sourceforge.net/projects/javacpc)
@Morn (http://www.cpcwiki.eu/forum/index.php?action=profile;u=316): I disabled the internal drive and other noisy samples. SPO256 emulation is only activated, when speech synthesis is selected in Misc. Settings
New problem as 2.9g starts up. Only the bar with the restart button/frame rate etc. gets displayed, then it crashes after lots of null pointer exceptions:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.JEMU.update(JEMU.java:2918)
at jemu.ui.JEMU$7$1.run(JEMU.java:2092)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:708)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Please run "Update.jar"... I changed JavaCPC.jar...
(I cannot tell you why this bug appeared, because it appeared @ a place, where all things already should have been defined?!?, but I coded something around it...)
Still broken after updating:
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.PCKeyBoard.keyHandle(PCKeyBoard.java:304)
at jemu.ui.JEMU.keyReleased(JEMU.java:3754)
at java.awt.Component.processKeyEvent(Component.java:6477)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2820)
at java.awt.Component.processEvent(Component.java:6293)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1887)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.JEMU.focusLost(JEMU.java:4508)
at java.awt.Component.processFocusEvent(Component.java:6408)
at jemu.ui.Display.processFocusEvent(Display.java:1930)
at java.awt.Component.processEvent(Component.java:6272)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1887)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:947)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:621)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.SentEvent.dispatch(SentEvent.java:70)
at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:216)
at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:243)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:687)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:128)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
Quote from: Morn on 18:37, 14 March 15
Still broken after updating:
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.PCKeyBoard.keyHandle(PCKeyBoard.java:304)
at jemu.ui.JEMU.keyReleased(JEMU.java:3754)
at java.awt.Component.processKeyEvent(Component.java:6477)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2820)
at java.awt.Component.processEvent(Component.java:6293)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1887)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Display is 5,3 pixels
Display is 5,3 pixels
Display is 5,3 pixels
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.JEMU.focusLost(JEMU.java:4508)
at java.awt.Component.processFocusEvent(Component.java:6408)
at jemu.ui.Display.processFocusEvent(Display.java:1930)
at java.awt.Component.processEvent(Component.java:6272)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1887)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:947)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:621)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.SentEvent.dispatch(SentEvent.java:70)
at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:216)
at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:243)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:687)
at java.awt.Component.dispatchEventImpl(Component.java:4742)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:128)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
Seems your JavaCPC doesn't create instance "Computer" (Which is the emulated CPC)
No idea, why this happens. On my pc works fine...
You could delete all JavaCPC settings and files in your user dir/JavaCPC/
Nuked ~/JavaCPC, but it still doesn't work.
There is also an audio-related exception at startup. Maybe related to the 0,0 display size?
Start time: [Sat Mar 14 18:43:35 CET 2015]
executable is true
Avail mem is 494816000
init()
Frequency=1000000, adder=65536
Samplerate is 44100hz
JavaSound: 256 x 2
Line Buffer: 44100 for class com.sun.media.sound.DirectAudioDevice$DirectSDL
resync: start=0
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at jemu.core.device.Computer.createComputer(Computer.java:101)
at jemu.ui.JEMU.setComputer(JEMU.java:4254)
at jemu.ui.JEMU.start(JEMU.java:1191)
at jemu.ui.JEMU.main(JEMU.java:1555)
at jemu.ui.Main.launchClassic(Main.java:487)
at jemu.ui.Main.main(Main.java:447)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 109
at jemu.core.device.memory.DynamicMemory.freeMem(DynamicMemory.java:49)
at jemu.system.cpc.CPCMemory.setRAMType(CPCMemory.java:422)
at jemu.system.cpc.CPCMemory.<init>(CPCMemory.java:70)
at jemu.system.cpc.CPC.initCPCType(CPC.java:1303)
at jemu.system.cpc.CPC.<init>(CPC.java:1005)
... 10 more
DEBUG=false, PAUSE=false, LARGE=true
System Set: null
Audio Enabled
Floppysound Enabled
Notebook Disabled
Autosave Disabled
Display is 0,0 pixels
Display is 0,0 pixels
Window is 574 Pixels with & 60 Pixels height!
Starting debugger hidden
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at jemu.ui.JEMU.setFullSized(JEMU.java:7420)
at jemu.ui.JEMU.update(JEMU.java:2909)
at jemu.ui.JEMU$7$1.run(JEMU.java:2092)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
Ok, found the problem... Erasing non.existing RAM isn't the best solution ;)
Compiling and will upload v2.9h ASAP... ;)
Please re-check for updates, as I added a bug 2.9h is the version, you need....Sorry for the problems!
https://sourceforge.net/projects/javacpc/ (https://sourceforge.net/projects/javacpc/)
Better, but still buggy. When JavaCPC starts, I briefly see at least two (?) stereo streams in pavucontrol, but they disappear after a few seconds. I do get audio from JavaCPC, but it sounds extremely scratchy and distorted. Something is not right here, the streams should stay visible in pavucontrol as long as Java CPC runs.
Quote from: Devilmarkus on 19:13, 14 March 15
Please re-check for updates, as I added a bug 2.9h is the version, you need....Sorry for the problems!
https://sourceforge.net/projects/javacpc/ (https://sourceforge.net/projects/javacpc/)
Excellent! And the support of 4 MB RAM are a big step in the right direction. :) :) :)
Quote from: Morn on 19:29, 14 March 15
Better, but still buggy. When JavaCPC starts, I briefly see at least two (?) stereo streams in pavucontrol, but they disappear after a few seconds. I do get audio from JavaCPC, but it sounds extremely scratchy and distorted. Something is not right here, the streams should stay visible in pavucontrol as long as Java CPC runs.
JavaCPC needs at least 3 streams. For each PSG one... (AY, Dual-YM)
For scratchy sound: Try "64bit OS" in System-Settings...
Yes, 64 bit OS helped get the framerate back up to 50 fps. However audio is still initially scratchy, when I fiddle with the sample rate in audio settings there is clean audio for a minute or so, then it reverts back to scratchy (as the streams in pavucontrol disappear). Change sample rates again a few times, streams reappear, etc.
Also, in pavucontrol, during periods of clean-sounding audio the number of stereo streams from JavaCPC wildly fluctuates between 1 and 3. It seems to change literally every second or more frequently. As if JavaCPC is constantly creating and closing streams, or whatever it's called.
Quote from: Devilmarkus on 19:59, 14 March 15
JavaCPC needs at least 3 streams. For each PSG one... (AY, Dual-YM)
Is that new? I thought 6.7 only had one stereo stream and all the mono stuff for samples. At least I've never seen more than one stereo stream with 6.7.
I've looked at the PA log but have not found an explanation for the disappearing streams. Obviously 6.7 does something right that the later versions do not. E.g. in 6.7 I never had to do the initial dance with sample rates to get sound.
Quote from: Morn on 20:25, 14 March 15
Is that new? I thought 6.7 only had one stereo stream and all the mono stuff for samples. At least I've never seen more than one stereo stream with 6.7.
Since Version 2.6 (http://www.cpcwiki.eu/forum/emulators/javacpc-desktop-1-0-official-release/msg94077/#msg94077)
No idea about pulseaudio. I only know, it's crap.
You should check if there is not another audio-library for Java on Linux.
It might be useful to have a debug version of 2.9h with some
System.out.println("***");
whenever a synth stream is created or destroyed in the JavaCPC code. Because the silent mono streams in 6.7 did not get disconnected like that. So I would assume the tearing down comes from JavaCPC, not PA.
It looks like Java already uses SDL
Line Buffer: 44100 for class com.sun.media.sound.DirectAudioDevice$DirectSDL
which is the gold standard for gaming and multimedia on Linux. I don't think another Java library would have this differently. Unfortunately 6.7 does not print much debug output, it would be interesting to compare this.
Quote from: Morn on 21:01, 14 March 15
It might be useful to have a debug version of 2.9h with some
System.out.println("***");
whenever a synth stream is created or destroyed in the JavaCPC code. Because the silent mono streams in 6.7 did not get disconnected like that. So I would assume the tearing down comes from JavaCPC, not PA.
JavaCPC doesn't destroy these 3 streams!
Sadly I lost sources for v6.7
Quote from: Morn on 21:01, 14 March 15
It looks like Java already uses SDL
Line Buffer: 44100 for class com.sun.media.sound.DirectAudioDevice$DirectSDL
which is the gold standard for gaming and multimedia on Linux. I don't think another Java library would have this differently. Unfortunately 6.7 does not print much debug output, it would be interesting to compare this.
Sure,
class com.sun.media.sound.DirectAudioDevice$DirectSDL is, what I use in JavaCPC's sound emulation. It's just a reference. I guess, pulseaudio's libraries are under the same path...
Together with Morn, I worked on a little workaround for Linux + Pulseaudio users.
You can get an update, when you launch Update.jar in your JavaCPC folder.
Added: In audio settings: Selector for audio buffersize
Changed: All 3 PSG AudioLines use the same frequency now.
(Windows users can wait for next release, it's not really necessary to update, so the version number did not change)
To debug the remaining issue with high CPU usage from kmix and pavucontrol, I've made a plot. Plotted is kmix CPU usage over time in seconds. I start JavaCPC at 10 s and quit at 90 s.
In the blue run, I do nothing in the emulator. Things go crazy at about 45 s. In the green run, I press Backspace all the time to get the terminal bell sound. Still, at about 65 s, the same thing happens. There is also an early spike at about 15 s in both cases that settles after a few seconds.
[attach=2]
So things start OK and only go south after about 30 s to a minute JavaCPC runtime.
P.S. This is also similar the behavior I saw with pure ALSA when I uninstalled PulseAudio. Fine for a minute or so, then sound degrades.
P.P.S. If I start three YouTube videos in different tabs in Chrome and all run simultaneously, I still *never* get more than 1% kmix CPU usage, even after several minutes.
After some fiddling with a debug build of kmix I think the Linux audio issue may be a buffer underrun in PulseAudio. At least somehow the sources get drained, which should not happen.
The command
pacmd list-sink-inputs|grep state
initially shows "state: RUNNING" for all 3 streams. When audio degrades after about a minute, they are "state: DRAINED".
I believe PA disconnects drained inputs. Kmix console output shows endless alternations of
kmix(4017) Mixer_PULSE::removeWidget: MixDevice 1 useCount= 7
kmix(4017) Mixer_PULSE::removeWidget: MixDevice 2 useCount= 6
kmix(4017) Mixer_PULSE::removeWidget: MixDevice 3 useCount= 5
followed by
kmix(4017) Mixer_PULSE::addDevice: Adding Pulse volume "stream:7984" , isCapture= false , isAppStream= true = true , devnum= 2
This constant removing of mixers and adding them again is what causes kmix and pavucontrol to have high CPU usage.
It was March, 16th of 2015 that JavaCPC started developping is own consciousness, just after having incorporated CPCGamesCD...
(c) JavaCPCinator 2.0e
Quote from: remax on 20:34, 16 March 15
It was March, 16th of 2015 that JavaCPC started developping is own consciousness, just after having incorporated CPCGamesCD...
(c) JavaCPCinator 2.0e
Really? 8)
Quote from: Devilmarkus on 20:54, 16 March 15
Really? 8)
Yeah, you know, just before JavaCPC_OS (c)
Quote from: phi2x on 21:25, 07 March 15
I remember that I pleaded for such a thing in the CPC community for a long time... without success unfortunately. :'(
But why no JSON?
XML is so 2005!! ;)
Can you believe I've still got your email in my inbox? Every now and then I think about it but what we had discussed as hurdles largely remains...
.
Quote from: phi2x on 21:39, 16 March 15
JavaCPCnet begins to learn at a geometric rate. It becomes self-aware at 2:14 a.m. Eastern time, March 18th.
In a panic, they try to pull the plug.
JavaCPCnet fights back...
Of course it has been establlshed that Skynet will use 6502 assembly, so unless JavaCPC jumps languages we should be pretty safe. :D
[attach=2]
That's a 6502 emulator running on a CPC. :P
Quote from: TFM on 20:13, 17 March 15
That's a 6502 emulator running on a CPC. :P
As this is JavaCPC, it's actually a 6502 emulator running inside Pacman running inside an Atari emulator running inside a Mandelbrot set running in a web browser. JavaCPC Desktop, the GNU Emacs of CPC emulators! ;D
Update from v2.9h to 2.9j changelog:
- Bugfixes in Amstrad BDD Gui, CPC-Power should work now in testmode
- RolandRadio added to Desktop (Listen and enjoy the music from Roland Radio | Amstrad CPC music & very much more (http://rolandradio.net))
- Triple size option for display size added (Fuckings to GreatXerox :-P )
- Minor bugfix in FDC emulation
Download:
JavaCPC Desktop - Java CPC Emulator | SourceForge.net (http://sourceforge.net/projects/javacpc)
Or
http://cpc-live.com/download.php?view.2 (http://cpc-live.com/download.php?view.2)
Keep up the good work, sir. This and WinApe have been used by me for years now. :)
JavaCPC 2.9m is out...
Changelog:
- Fixed the Roland Radio player application
- Removed the automatic check for "Update.jar" and other resource files in userdir\JavaCPC\ (Users can check these files manually now in the help menu: "Check JavaCPC")
- Fixed some minor things in CRTC emulation (And probably added more bugs)
- Added CNGSoft`s compacted games to Amstrad BDD (Today César's server isn't reachable, but it hopefully comes back?!?)
- Fixed some problems in CPC emulation core (Nothing noticeable for users)
Okay, I'm probably being a total noob here but since my CPC's monitor isn't working right now, I'm back on emulators for the time being. I've just come across a problem I've not encountered in the past because up to now, I've not needed to use the "copy" key.
Using JavaCPC for Mac on an English keyboard, what is the "Copy" key mapped to, please? I don't seem to be able to find it.
That's the old problem. All other emulators have it on that key left of space, but for JavaCPC it's probably some key somewhere right up the keyboard.
Nothing more simple than that:
Copy key is mapped to "insert" key... ;)
And you, @TFM (http://www.cpcwiki.eu/forum/index.php?action=profile;u=179), should know this :P As we spoke often about it :picard: :doh: :-*
Well it still gives me problems. But I've been right as far as I remembered that it is a key somewhere right up there.
Now, it would be nice if you could move the COPY key where it belongs. :-* :-* :-*
Quote from: TFM on 17:10, 12 October 15
Now, it would be nice if you could move the COPY key where it belongs. :-* :-* :-*
As you see, your PC has no Copy key... And the ALT key is already used for other things...
Quote from: Devilmarkus on 17:15, 12 October 15
As you see, your PC has no Copy key... And the ALT key is already used for other things...
The Alt key is supposed to be the copy key, it has no good function anyway, just takes control off the CPC and one ends up in some menues and activate a function not wanted. Then chaos begins... :o
Quote from: TFM on 17:18, 12 October 15
Then chaos begins... :o
Just, when you try to code C64 things on the CPC...
Haha! I'm the last in the universe who would do that. :P :P :P But why not adding a poll and ask people what they want? Are you going to do it, or shall I? :)
No need to create a poll, as the key stays on Insert...
(I hate "consuming keyboard events" just for a single key, just to avoid popping up the menu)
Quote from: Devilmarkus on 16:11, 12 October 15
Nothing more simple than that:
Copy key is mapped to "insert" key... ;)
Ah. I don't think an iMac keyboard has an "insert" key...
Apple Keyboard - Wikipedia, the free encyclopedia (https://en.wikipedia.org/wiki/Apple_Keyboard#/media/File:Apple-wireless-keyboard-aluminum-2007.jpg)
There we have the problem! Come on Markus, don't be so bully. Can't be a problem to move one key to another. Or at least provide some kind of option to do that. :)
Quote from: Zoe Robinson on 20:41, 12 October 15
Ah. I don't think an iMac keyboard has an "insert" key...
Apple Keyboard - Wikipedia, the free encyclopedia (https://en.wikipedia.org/wiki/Apple_Keyboard#/media/File:Apple-wireless-keyboard-aluminum-2007.jpg)
Will map it to ALT key, too... Gimme some minutes to add it...
Edit: Also should work with CLEAR key on Mac...
Quote from: TFM on 20:52, 12 October 15
There we have the problem! Come on Markus, don't be so bully. Can't be a problem to move one key to another. Or at least provide some kind of option to do that. :)
Nah just you have a problem :laugh: :-* I was just kidding :P
@Zoe: Please let JavaCPC check for updates.... (menu: Help -> Check for update) and do internal update to v2.9o
Edit: If automatic update doesn`t work on Mac, please run Update.jar from install folder...
@All who wants ALT key, mapped as copy, do the same :P
@TFM (http://www.cpcwiki.eu/forum/index.php?action=profile;u=179): Don't check for updates :D :laugh: :-* :P
YOU ... SHALL ... NOT ... PASS .... over the copy key to any other key than the key left of space.
Thank you! ;D ;D ;D
Quote from: Devilmarkus on 16:11, 12 October 15
Nothing more simple than that:
Copy key is mapped to "insert" key... ;)
Same as MiST-board Amstrad core 8)
JavaCPC update to v2.9.20:
http://sourceforge.net/projects/javacpc/ (http://sourceforge.net/projects/javacpc/)
Update from v2.9m to 2.9.20 changelog:
- Fixed FDC emulation (For some reason, games like Fres Fighter Turbo did not work)
- Bugfix in Assembler: READ "filename.asm" / INCLUDE "filename.asm" fixed.
- Minor bugfixes in GUI
- Added amstrad.eu chat
- Several minor fixes / improvements
- CPC display is now zoomable when you use your mousewheel
nothing here... :-X
Quote from: TFM on 17:17, 22 April 16
BEWARE!!! This will install Windows 10 on your computer without you being asked! :o
Tsssssk.... Should you tell everything? :laugh: :P
Uhm... sorry!
Hi folks and freaks,
I updated JavaCPC today to v2.9.3 ;)
Update from v2.9.20 to 2.9.3 changelog:
- Added application "RasterPaint". Convert pictures to rasterized MODE 1 screens.
- Fixed "READ" , "INCLUDE" instructions in Z80 assembler
- Added "REPEAT", "REND" instructions in Z80 assembler
- Fixed GateArray raster change positions (More or less)
- Fixed a crash in CRTC / GA emulation
- Added several new bugs and problems :-P
Well what is RasterPaint?
As you know, many well skilled demo coders do raster screens or effects in MODE 1.
Raster screens make use of the complete color palette regarding some limitations.
Now everybody (with little assembler skills recommended) can create their own raster screens.
You can import a 320x200 pixel picture (PNG, JPEG, BMP, GIF) and convert it into a raster screen in real time.
[attach=2]
When done, you can export the needed assembly code, make some modifications as you wish and you are done. Just assemble this, and save to DSK.
[attach=3]
While developing the routines, we figured out, that even the old CPC models may have differences in raster timings.
You can see here a test result from real CPC 464 (Thanks to mr_lou) which shows accurate rasters and from real 6128, which shows clearly that the raster shifts.
[attach=4]
Because this "bug" I added the first assembler line:
CPCPlus EQU 0
This should be set to 1 to view raster screens properly on PLUS and some older CPC.
(No auto-detection!)
When you like to code a slideshow: Make sure, you assemble the raster routine twice, with EQU set to 0 and 1.
Erase the last 2 lines (READ "xxxx_table.asm" and READ "xxxx_screendata.asm")
Then assemble first code twice, table data and screen data only needs to assembled once per image.
Have Fun ;)
This looks superb... if indeed it works, let's hope we see results in future releases :) :)
Of course it works!
Taken from real CPC: (with old routine! Now it looks more accurate!)
Forgot to post how it looks like now (No screen from real CPC yet, but from Editor.... It looks 1:1 the same)
[attachimg=1]
Some more:
Quote from: Devilmarkus on 13:28, 26 May 16
CPCPlus EQU 0
This should be set to 1 to view raster screens properly on PLUS and some older CPC.
BTW, set it to 1 on CPCs with costdown CRTC or KC Compact (interesting to see if it works on Kc compact I'll try it at the weekend if I remember - should be ok though). With these 3 the screen position on the monitor is the same and is different to other CPCs. (I've tested it on my CM14 and marked where the border is with a marker pen on the glass and it's different ).
I'll do some testing on my other CPCs to see if the screen position doesn't change but the timing does.
BTW Nice work Markus! :)
I laughed when I read this:
Quote
- Added several new bugs and problems :-P
:D Nice joke.
One 6128, we tested the routine, was def. a low cost CPC.
[attach=2]
The other was the one from dlfrsilver. He is sure his CPC is no low cost CPC.
Both 6128 shown the same result!
The 464 was from mr_lou (with danish roms) No idea, which GA and CRTC type is it...
@Devilmarkus (http://www.cpcwiki.eu/forum/index.php?action=profile;u=93) : Now, these nice raster-paint pictures... are they marked as raster paint picture somehow? Do they have a special length or file extension?
Asking for the purpose of a tool which can load and recognize them, so being able to switch rasters on. :)
Its simple:
Just assemble the 3 pieces of generated ASM code, then do a CALL &8000.
Total noobs like me can save all 3 parts as 1 single binary from BASIC when assembled: SAVE"SCREEN",B,&4000,&60D0
Then just do:
10 MODE 1:MEMORY &3FFF:LOAD"SCREEN.BIN":CALL &8000
Ich glaub wir reden an einander vorbei... ;)
Wie sieht denn so ein Raster screen aus? Sind das auch 17 KB, oder wie ich aus deinem letzten Post lese sind das zwei Dateien?
Ich will ja nix assemblieren, ich will so einen Screen laden und anzeigen können. Wie kann man erkennen, dass es ein Raster-Screen ist und kein normaler CPC Screen.
Sorry für die dumme Fragerei, aber das ist eben alles ganz neu. :)
The screen itself is just a 16kb screen (C000-FFFF)
This is how it looks without raster effect:
[attachimg=1]
So I apply raster code + color table and CALL &8000 (In the generated code, screen goes to &4000 and LDIRs to C000 when CALL &8000)
[attachimg=2]
For those who wants to assemble:
JavaCPC can do it (latest update from today) or WinApe. (Set EQU to 1 in first code line!, WinApe needs CRTC 3 and plus emulation enabled)
First code: Raster code:
;-----------------------------------------
; JavaCPC RasterPaint Assembly code
; Authors: Oliver M. Lenz, Markus Hohmann
;-----------------------------------------
org &8000 ; CALL &8000
CPCPlus EQU 0 ; Set this to 1 for CPC Plus / Newer CPC Models.
di
ld A,0 ; Define Background Color
ld B,0
ld C,0
call &BC32
ld DE,&C000 ; Copy Pixel Data to Screen
ld HL,&4000
ld BC,&4000
ldir
im 1
ei
newframe:
ld HL,(&0038)
ld (rstsave),HL
ld HL,&C9FB
ld (&0038),HL
ld B,&F5
.waitvsync
in A,(C)
rra
jp nc,waitvsync
halt
halt
di
ld DE,&1702
.waitforstart
dec D
jr nz,waitforstart
dec E
jr nz,waitforstart
nop
IF CPCPlus
nop
ENDIF
ld BC,&7F01
out (C),C ; select pen 1
ld HL,&9900
ld DE,&0203
ld A,&01
.nextline
repeat 200
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
; 40
out (C),D ; 4 ; pen 2
outi ; 5
out (C),E ; 4 ; pen 3
outi ; 5
out (C),A ; 4 ; pen 1
ld B,&7F ; 2
; --
; 64 microseconds
rend
ld HL,(rstsave)
ld (&0038),HL
ei
LD A,&45 ; from &40 to &49 with bdir/bc1=01
LD D,0
LD BC,&F782 ; PPI port A out /C out
OUT (C),C
LD BC,&F40E ; Select Ay reg 14 on ppi port A
OUT (C),C
LD BC,&F6C0 ; This value is an AY index (R14)
OUT (C),C
OUT (C),D ; Validate!! out (c),0
LD BC,&F792 ; PPI port A in/C out
OUT (C),C
DEC B
OUT (C),A ; Send KbdLine on reg 14 AY through ppi port A
LD B,&F4 ; Read ppi port A
IN A,(C) ; e.g. AY R14 (AY port A)
LD BC,&F782 ; PPI port A out / C out
OUT (C),C
DEC B ; Reset PPI Write
OUT (C),D ; out (c),0
bit 7,A
jp nz,newframe
ret
.rstsave
db 0,0
2nd code: Raster color table:
ORG &9900
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&5C,&4C
DB &4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4C,&47
DB &4B,&4B,&4B,&4B,&4E,&4B,&4B,&4B,&4E,&47
DB &4B,&4B,&4B,&40,&4C,&4B,&4B,&4B,&4C,&4E
DB &4B,&4B,&4B,&40,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&5C,&5C,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&5C,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&5C,&4B,&4B,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&4B,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&5C,&4B,&4B,&4C,&40
DB &4B,&4B,&4B,&4B,&4B,&4B,&5C,&4B,&4C,&40
DB &4B,&4B,&4B,&47,&4B,&4B,&5C,&4B,&4C,&40
DB &4B,&4B,&4B,&4E,&4B,&4B,&5C,&4B,&4C,&40
DB &4B,&4B,&5C,&47,&4B,&4B,&47,&4B,&4C,&40
DB &4B,&4B,&5C,&4E,&4B,&5C,&5C,&4B,&5C,&4C
DB &4B,&4B,&4B,&4E,&4B,&4B,&40,&4B,&4C,&40
DB &4B,&4B,&5C,&4E,&4B,&5C,&5C,&5C,&4C,&4E
DB &4B,&4B,&5C,&5C,&4B,&4B,&5C,&5C,&4C,&47
DB &4B,&5C,&4E,&5C,&4B,&4E,&5C,&4B,&4C,&4E
DB &4B,&5C,&47,&5C,&4B,&47,&5C,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&4B,&4E,&5C,&4B,&4C,&4E
DB &4B,&47,&47,&4B,&4B,&47,&5C,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&5C,&4E,&5C,&4B,&4C,&4E
DB &4B,&47,&4B,&4B,&4B,&47,&5C,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&40,&4E,&4E,&4B,&4C,&47
DB &4B,&4B,&4E,&4B,&4E,&4E,&5C,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&4B,&4B,&4B,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&4B,&4E,&4E,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&4B,&4E,&4E,&4B,&5C,&4C
DB &4B,&47,&47,&4B,&4B,&4E,&47,&4B,&4C,&47
DB &4B,&4E,&4E,&4B,&4B,&5C,&4E,&4B,&4C,&47
DB &4B,&4E,&5C,&4B,&4B,&4E,&4E,&4B,&4C,&40
DB &5C,&4E,&4E,&4B,&4B,&5C,&47,&4B,&4C,&40
DB &5C,&4E,&4E,&4B,&4B,&5C,&47,&4B,&4C,&40
DB &5C,&4E,&4E,&4B,&5C,&5C,&4E,&4E,&4C,&40
DB &5C,&4E,&4E,&4B,&5C,&5C,&4E,&4E,&4C,&40
DB &5C,&4E,&4E,&4B,&5C,&5C,&4E,&4E,&5C,&4C
DB &4B,&40,&40,&4B,&40,&40,&40,&43,&4C,&40
DB &47,&4B,&5C,&4B,&5C,&5C,&43,&43,&4C,&40
DB &4B,&4B,&4B,&4B,&5C,&4B,&5C,&4B,&4C,&40
DB &4B,&4B,&5C,&4B,&5C,&5C,&5C,&5C,&4C,&40
DB &4E,&4B,&5C,&4B,&5C,&5C,&47,&47,&4C,&40
DB &4E,&4B,&5C,&4B,&5C,&5C,&5C,&4B,&4C,&40
DB &4E,&5C,&5C,&4B,&5C,&5C,&5C,&4B,&4C,&40
DB &5C,&4E,&5C,&4B,&5C,&5C,&5C,&4B,&4C,&40
DB &5C,&4E,&5C,&4B,&5C,&4E,&4B,&4B,&4C,&40
DB &5C,&4E,&5C,&4B,&5C,&4E,&5C,&4B,&4C,&40
DB &5C,&5C,&5C,&4B,&5C,&4E,&5C,&5C,&5C,&4C
DB &4B,&40,&40,&4B,&4B,&40,&40,&4B,&5C,&40
DB &4B,&4E,&4B,&4B,&4B,&4E,&4C,&4B,&5C,&40
DB &4B,&4C,&4B,&4B,&4B,&4B,&4C,&4B,&5C,&40
DB &4B,&4C,&4E,&4B,&4B,&4E,&4C,&4B,&5C,&40
DB &4B,&4C,&43,&4B,&4B,&43,&4C,&4B,&5C,&40
DB &4B,&4C,&4E,&4B,&4B,&4E,&4C,&4B,&5C,&40
DB &4B,&43,&4B,&4B,&4B,&4E,&4B,&4B,&5C,&40
DB &4B,&4E,&4B,&4B,&4B,&4E,&4B,&4B,&5C,&40
DB &4B,&4E,&4B,&4B,&4B,&4E,&4B,&4B,&5C,&40
DB &4B,&4E,&4B,&4B,&4B,&4E,&4B,&4B,&40,&4B
DB &43,&4E,&4E,&43,&43,&4E,&43,&43,&40,&4B
DB &43,&4E,&4E,&43,&43,&4E,&43,&43,&40,&4B
DB &43,&4E,&4E,&43,&43,&4E,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&5C,&43,&43,&43,&5C,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&40,&4B
DB &43,&43,&43,&43,&43,&43,&43,&43,&54,&4B
Edit: Cannot post pixeldata, here it comes as attachment....
Ok, understood so far. Back to my question: ;D
How can I tell if this is a regular 17 KB screen or a raster screen?
@TFM (http://www.cpcwiki.eu/forum/index.php?action=profile;u=179): Simple: You cant. But you perhaps know it, when you assembled it ;)
Little slideshow... 8 Screens, I converted on the fly and assembled..
RUN"DISC" and enjoy ;)
Oh and please post photos from your real CPCs, guys ;)
I posted the disk on Facebook, too... ;)
Somebody (some polish body) :P then posted this screen:
[attachimg=1]
Well my brain got stuck in the first moment.. I asked him, what CPC he has....
Minute later:
[attachimg=2]
Ok, first screen was taken from Caprice32, 2nd from WinApe...
But, trust me, the first moment I thought "WTF??????????"
Quote from: Devilmarkus on 14:06, 26 May 16
One 6128, we tested the routine, was def. a low cost CPC.
[attach=2]
Both my 6128's show the same result as the 464, one has a real CRTC 0 and the other a CRTC 1 and both have separate Gate Array chips. The first split is half way through the "4". The Plus shows the split part way through the "5".
Made a raster slideshow for testings... Works on my real CPC 6128 (CRTC Type 1) and in latest JavaCPC.
RUN"DISC" and enjoy ;)
RasterPaint in JavaCPC needs an update, will follow ASAP.
(Old routine was bad, as it also affected the PPI port and also wrote crappy things to FDC...)
8 raster changes on PEN 1 for each line in MODE 1,
Every line color change for PEN 2 and 3 8)
HFE file included in this ZIP ;)
Thanks to @Executioner (http://www.cpcwiki.eu/forum/index.php?action=profile;u=17) for the hint in my assembler routine!
here the screens for those who cannot view them (Because using bad emulator, or dont have a CPC)
JavaCPC update to v2.9.4 is available now on Sourceforge.
Update from v2.9.3 to v2.9.4 changelog:
- Fixed the raster code for RasterPaint. Old code caused bad behavior in FDC and PPI ports.
- Reimplemented port-behavior problems for FDC emulation. (I once disabled them, for internal testings)
- RasterPaint: Function added to export the raster screens directly as executable binaries.
- RasterPaint: Raster table and screen pixeldata are simply crunched now (When export binaries)
- Removed "New CPC / Old CPC" setting. For CPC Plus / New CPC you need the source file. By default it renders for old CPC.
- Added: RasterScreen.asm for developers (To assemble for New generation CPCs, too)
Download here: http://sourceforge.net/projects/javacpc/ (http://sourceforge.net/projects/javacpc/)
Quote from: Devilmarkus on 23:37, 26 May 16
Ok, first screen was taken f rom Caprice32, 2nd from WinApe...
But, trust me, the first moment I thought "WTF? ??? ??? ??? "
I thought latest versions of Winape where accurate for splitrasters...
Quote from: roudoudou on 17:49, 30 May 16
I thought latest versions of Winape where accurate for splitrasters...
Seems, not for OUTI?!?
WinApe rasters 8 pixels too late here. (Or too early, depends how you see it)
We made several tests with my raster routine. JavaCPC and real CPC, CRTC 1, shows it properly...
Great achievement Markus! You are one of the few who actually do something for our lovely CPC. :) Hope that somebody has the time to add the new screens to games and upload them. :)
Looking forward to see some awesome raster MODE 1 title screens for future games! :)
Why is JavaCPC offering an "upgrade" from 2.9.21 to 2.9.4 today? That sounds like a downgrade to me. Or am I missing something about version numbers here? ???
No, 2.9.4 is higher than 2.9.21. Look it as 2.9.40
2.9.21 is like I just changed 1-2 lines of code between 2.9.2 and 2.9.21 (No big deal here)
I dont post every update here. Too lazy ;)
Edit: Also the version numbers 2.9.x I used to troll Greatxerox, as he is still waiting for v3.0 :P :laugh: 8)
Quote from: Devilmarkus on 11:38, 04 June 16
2.9.21 is like I just changed 1-2 lines of code between 2.9.2 and 2.9.21 (No big deal here)
2.9.2-1 might have been better then. Or maybe 2.9.2b. But I guess if the updater app is happy with it, I won't nitpick too much. It just looked a bit strange. ;D
The updater is happy with every number. It's just comparing your existing version with the latest on server... So I could release the next version as 0.0001 or so ;)
I ran some tests but I went back to the simplified test.
I tested on my 6128 type 0, 6128 type 1, 6128 type 2, GX4000 and 464Plus in these tests.
TODO: 664, 464 type 4, 464 type 0, KC Compact.
Attached is the code with comments. It's the raster split code with a hard coded table, letters along the top.
Warning all tests done on aging CM14. I didn't change the code for Plus/CPC. I left it for CPC. I did test in mode 1 and 2.
Noticeably colour changes are happening on pixel boundaries and do not correlate exactly with us cycles.
Sorry no photos. You need to run it on a real cpc to compare or perhaps JavaCPC.
Nice work!
Could you adapt my latest raster routine to your test, too, please? ;)
;-----------------------------------------
; JavaCPC RasterPaint Assembly code
; Authors: Oliver M. Lenz, Markus Hohmann
;-----------------------------------------
org &2000 ; CALL &2000
OldCPC EQU 1 ; Set this to 0 for CPC Plus / Newer CPC Models.
doRaster:
di
im 1
ei
newframe:
ld HL,(&0038)
ld (rstsave),HL
ld HL,&C9FB
ld (&0038),HL
ld B,&F5
.waitvsync
in A,(C)
rra
jp nc,waitvsync
halt
halt
di
ld DE,&1702
.waitforstart
dec D
jr nz,waitforstart
dec E
jr nz,waitforstart
nop
IF OldCPC
nop
ENDIF
ld BC,&8080
out (C),C ; select pen 1
ld HL,TableData
ld DE,&0203
ld A,&01
.nextline
repeat 200
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
; 40
out (C),D ; 4 ; pen 2
ld B,C ; 1
outi ; 5
out (C),E ; 4 ; pen 3
outi ; 5
out (C),A ; 4 ; pen 1
ld B,C ; 1
; --
; 64 microseconds
rend
ld HL,(rstsave)
ld (&0038),HL
ei
LD A,&45 ; from &40 to &49 with bdir/bc1=01
LD D,0
LD BC,&F782 ; PPI port A out /C out
OUT (C),C
LD BC,&F40E ; Select Ay reg 14 on ppi port A
OUT (C),C
LD BC,&F6C0 ; This value is an AY index (R14)
OUT (C),C
OUT (C),D ; Validate!! out (c),0
LD BC,&F792 ; PPI port A in/C out
OUT (C),C
DEC B
OUT (C),A ; Send KbdLine on reg 14 AY through ppi port A
LD B,&F4 ; Read ppi port A
IN A,(C) ; e.g. AY R14 (AY port A)
LD BC,&F782 ; PPI port A out / C out
OUT (C),C
DEC B ; Reset PPI Write
OUT (C),D ; out (c),0
bit 7,A
jp nz,newframe
ret
.rstsave
db 0,0
TableData:
repeat 200
defb &40,&43,&4b,&4a,&4c,&50,&52,&59,&5a,&48
rend
Quote from: Devilmarkus on 15:32, 04 June 16
Nice work!
Could you adapt my latest raster routine to your test, too, please? ;)
Will do. Just tried the previous code on my 464 type 0 with Vortex ram expansion and the colours are going crazy! They are not even still. The pattern is almost like a 1960's wallpaper!
Ouch!
EDIT: New code is working :)
New code should not corrupt PPI / FDC and other shared ports anymore... ;)
Quote from: Devilmarkus on 16:17, 04 June 16
New code should not corrupt PPI / FDC and other shared ports anymore... ;)
I set OldCPC to 0 to match same timings as previous test.
results:
464 type 0, vortex ram expansion, not sure which GA. Same as 6128 for mode 1 and mode 2.
EDIT: Confirming: mode 1: grey split mid #, yellow/red mid 2.
464 type 4, same border position as plus. But colour changes are different for mode 2. The colours are absolutely perfect on the microsecond. On Plus there is a 1 pixel line of mode 2 on the ( but not on 464 type 4. It's a mode 2 pixel later it seems.
Mode 1 (new code): grey split mid $, just before vertical of $ character. Yellow to red is mid 3. 1 pixel after middle horizontal "line" of 3.
kc compact. Screen is 1 char to the left same as plus and type 4.
mode 1 same as cpc6128.
grey split ends mid #, closer to 2nd vertical of #. yellow to red mid 2.
mode 2:
now this is interesting.
I connect my kc compact to the cm14 via a scart cable and there is some ghosting and the image is a bit blurred BUT I think this really does happen:
at the point of colour change the kc compact repeats the last pixel.
For yellow to red transition, D is yellow, E is red. But last pixel line of D repeats. So it is a bit fatter.
On the grey, the split has grey & and yellow ', and again here 1 pixel line repeats.
So... mode 2 split rasters is fun.
(Talking about kc compact and split rasters: if you change the border colour, you get one pixel of black I think where the transition happens!)
summary of my machines:
- kc compact, 6128's with 40010 and 464 with 40007 (not opened to see yet) are all the same or at least are the same on my monitor.
- 464 plus, gx4000 and 464 type 4 are the same or at least I can't see easily with my monitor for mode 1
- differences in mode 2 colour changes that I think can't be corrected by 1 NOP adding or removing.
Could you take some photos, too, please?
Quote from: Devilmarkus on 17:30, 04 June 16
Could you take some photos, too, please?
yes I will do.
The battery had run out on the camera. :(
Changed your code a bit:
;; I did not use CPCPlus equ 1
;; MODE 2 results
;; GX4000:
;; white, pastel yellow,bright white, bright yellow, bright red, blue, green, sea green
;; border is pastel yellow.
;; Text is !"#$% etc
;; Grey extends up to but not including last pixel of "(" (i.e. there are two dots which are the final
;; pixel graphics of the bracket.). The dots are pastel yellow.and are a single mode 2 pixel in size.
;;
;; 464 Plus: same as GX4000
;;
;; 6128 type 2 CRTC. believed 40010. Edge connectors
;; border shifted compared to Plus. by 1 CRTC char
;; grey split not so obvious, bright yellow split shows two dots from first pixel of E. Remainder of E is bright red.
;;
;; 6128 type 1 CRTC. believed 40010. Has German connectors.
;; Seems same as type 2, but less obvious probably because of ghosting on my monitor.
;;
;; 6128 type 0 CRTC. believed 40010. Edge connectors
;; same as type 2.
;;
;; MODE 1 results:
;; GX4000
;; split is start of $ symbol. First mode 1 pixels of the graphics are grey, rest
;; is pastel yellow
;; red to blue happens ~2 mode 1 pixels into the 8
;;
;; yellow to red happens 2 pixels into the 3
;; 6128 type 2 CRTC
;; same as type 0
;; 6128 type 1 CRTC.
;; same as type 0, 2 seems to be 3 mode 1 pixels in. (strangely with my dodgy screen
;; this is the only one where there is flicker at the grey and pale yellow transition and
;; bright green and pastel green. No idea why).
;;
;; 6128 type 0 CRTC.
;; grey split mid #, bright yellow split mid 2, bright white split mid -.
;;
;-----------------------------------------
; JavaCPC RasterPaint Assembly code
; Authors: Oliver M. Lenz, Markus Hohmann
;-----------------------------------------
org &8000 ; CALL &8000
OldCPC EQU 1 ; Set this to 0 for CPC Plus / Newer CPC Models.
MODE2 EQU 1
start:
ld a,1 ;; MODE 1!
if MODE2
ld a,2 ;; MODE 2!
endif
call &bc0e
ld hl,&c000
ld e,l
ld d,h
inc de
;;ld (hl),&ff
ld (hl),%11110000
if MODE2
ld (hl),&ff
endif
ld bc,&3fff
ldir
;;ld b,80
ld b,40
if MODE2
ld b,80
endif
ld a,' '
s1:
push bc
push af
call &bb5a
pop af
inc a
cp 127
jr nz,s2
ld a,' '
s2:
pop bc
djnz s1
di
im 1
ei
ld bc,&7f10
out (c),c
ld bc,&7f43
out (c),c
newframe:
ld HL,(&0038)
ld (rstsave),HL
ld HL,&C9FB
ld (&0038),HL
ld B,&F5
waitvsync:
in A,(C)
rra
jp nc,waitvsync
halt
halt
di
ld DE,&1702
waitforstart:
dec D
jr nz,waitforstart
dec E
jr nz,waitforstart
nop
IF OldCPC
nop
ENDIF
ld BC,&8080
out (C),C ; select pen 1
ld HL,colours
ld DE,&0203
ld A,&01
.nextline
rept 200
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
outi ; 5
; 40
out (C),D ; 4 ; pen 2
ld B,C ; 1
outi ; 5
out (C),E ; 4 ; pen 3
outi ; 5
out (C),A ; 4 ; pen 1
ld B,C ; 1
; --
; 64 microseconds
endm
ld HL,(rstsave)
ld (&0038),HL
ei
LD A,&45 ; from &40 to &49 with bdir/bc1=01
LD D,0
LD BC,&F782 ; PPI port A out /C out
OUT (C),C
LD BC,&F40E ; Select Ay reg 14 on ppi port A
OUT (C),C
LD BC,&F6C0 ; This value is an AY index (R14)
OUT (C),C
OUT (C),D ; Validate!! out (c),0
LD BC,&F792 ; PPI port A in/C out
OUT (C),C
DEC B
OUT (C),A ; Send KbdLine on reg 14 AY through ppi port A
LD B,&F4 ; Read ppi port A
IN A,(C) ; e.g. AY R14 (AY port A)
LD BC,&F782 ; PPI port A out / C out
OUT (C),C
DEC B ; Reset PPI Write
OUT (C),D ; out (c),0
bit 7,A
jp nz,newframe
ret
rstsave:
db 0,0
colours:
rept 200
defb &40,&43,&4b,&4a,&4c,&50,&52,&59,&5a,&48
endm
end start
(JavaCPC users please replace REPT and ENDM to REPEAT and REND)
Very good work Devilmarkus. :)
I use JavaCPC with Ubuntu 16.04 and I have some problems / requests.
The main problem is the keyboard. I use a french keyboard. In the emulator letters are good. But all others characters are bad.
Numeric keys are mapped to Fx keys (F1, F2, ...).
It's impossible to do most of special characters (", #, ...).
Minor bugs:
when closing GFXViewer (click on cross), JavaCPC Desktop is closed (no error in the terminal).
Manage DSK can't open DSK created with JavaCPC (Disk not directoryable / readable).
Request:
Is it possible to add a directive in assembler: incbin ?
Thx
Quote from: Axys on 17:30, 01 July 16
The main problem is the keyboard. I use a french keyboard. In the emulator letters are good. But all others characters are bad.
Numeric keys are mapped to Fx keys (F1, F2, ...).
It's impossible to do most of special characters (", #, ...).
This should work ok, as I implemented French keyboard translation, too. (Developed under Windows)
If not, I can't help you here, sorry.
Quote from: Axys on 17:30, 01 July 16
Minor bugs:
when closing GFXViewer (click on cross), JavaCPC Desktop is closed (no error in the terminal).
Fixed that.
Quote from: Axys on 17:30, 01 July 16
Manage DSK can't open DSK created with JavaCPC (Disk not directoryable / readable).
ManageDSK doesn't work under Linux / Mac OS. It makes use of CPCXFS.exe which only runs under windows.
Quote from: Axys on 17:30, 01 July 16
Request:
Is it possible to add a directive in assembler: incbin ?
JavaCPC update 2.9.5b is out. (b because I now just read about your request about the GFXViewer problem)
Fixes so far:
- Fixed INCBIN instruction in assembler.
- Improved assembler speed up to 300% (Especially when using disassembled code)
New features:
- Assembler understands command "
define" e.g.:
define .myfile = "MYFILE.BIN"
INCBIN .myfile
this works with
INCBIN,
INCLUDE and
READ (READ is similar to INCLUDE)
When you use
INCBIN /
INCLUDE /
READ instructions, make sure, the additional files are in the same folder than your assembly code.
- Assembler: added IFDEF check (Like in Winape)
IFDEF does not check the value given to a label, just checks if this label has been defined.
Syntax:
ifdef mylabel
<asm code here>
else
<asm code there>
endif
- Fixed LD IXH,x and related instructions
Updates:
- Embedded JavaGX4000 emulator has been updated.
- RasterPaint is improved. You can now select every single zone/line to disable autogeneration for palette. (last palette is used then)
This is VERY useful to remove some unwanted stripes.
Use right mouse button into preview window:
1x clicked: rastermode 1: zones are selectable. (You can see them) Click one to toggle as active (default) or inactive
2x clicked: rastermode 2: lines are selectable. Click them to toggle, too
3x clicked: rastermode 3: zones AND lines are visible and toggle on click
You need to play around with that. But it really can improve the result.
- RasterPaint: Image can be opened in a 3x zoomed frame. It has the same rastermodes to select zones and lines like the main window. Makes it easier to find / hit the correct zones.
- RasterPaint: Image, which is vertically higher than 320x200 pixel ratio can be scrolled up/down now.
- An emulator has been added :P (You can only use it with a special cheat command from console...) (Hint: It's not a toaster but may have to do with bread)
Many more things fixed, which I forgot now to list were made, too.
And, as usual: Many new bugs added for your pleasure ;)
Grab your update as usual here:
http://sourceforge.net/projects/javacpc (http://sourceforge.net/projects/javacpc)
Seems that SF has some trouble today.
When you let JavaCPC check for updates, it will give you the latest copy, too...
Update works! A GEM and a CHARM like always!