News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Devilmarkus

JavaCPC 6.3 released

Started by Devilmarkus, 20:23, 27 April 09

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Devilmarkus

Hi together,

today I released the new version 6.3 of JavaCPC.

- CDT support!
- Tape can save to WAV
- YM-Recorder changed: - Waits now until AY chip reacts, before start
   recording
- Better scan-effect and scanlines when bilinear filter is set
- Drag & drop function - You can now drag & drop all supported files,
   like DSK, CDT, WAV, SNA etc... directly into emulator window
- Better memory useage (You can still use JavaCPC as applet, but there
   with memory limitations. As application, it can now use up to 256mb
   RAM.) - Larger memory is used for on-the-fly CDT converting.
- Convert CDT to WAV function to create WAV files from tape images
- Some bugfixes


Thanks to Kev Thacker for great help!
Also thanks to John Girvin - www.girv.net -
for his C++ conversation of:
"TZX to WAV Converter v0.2"
"(C) 2006 Francisco Javier Crespo"

Download your copy of JavaCPC on my website:
http://cpc-live.com

Have fun!
Markus
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

#1
I forgot about 2 new features:

- Breakpoints for debugger (You can define up to 40 breakpoints)
- Debugger can auto-update
Booth points are chooseable from "Help" menu.

A demo-gif about breakpoints:
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

Some improvements done.
Who wants to try Work-In-Progress:
http://cpc-live.com/jemu/JavaCPC.jnlp

No downloads yet.

New:
- JavaCPC can keep now display proportions when resizing the window or changing to fullscreen
- Added a position slider into tape drive
- Added a simple memory function into tape drive
- Tape counter has the same speed now than tape counter in my CPC 464
- Optimized CDT2WAV conversion
- Bugfix in calculating WAV header (makes it possible now to edit exported WAV with audio software)
- and some more improvements

Waiting for feedback...
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

Some news:
- Next version of JavaCPC will also be able to load MP3-tapes! (Like games from amstradeus.com website)

Preview: HERE

Still trying to optimize MP3toWAV routines...
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

dlfrsilver

Hello Markus, we need your help.

How do you make JAVA cpc open zip files thru a web page ? Kukulcan from phenix informatique has implemented
JAVA cpc in order to load the games we have online, but impossible to make it load files from another place
than the one "wanted" by the emulator.

Also, we can give you access to many games with different protection schemes if you want to enhance
your emu ^^. I have already done MANY games in mp3 with every parts splitted like this :

Code.mp3
level0X.mp3
etc....

Thanks for your reply !

Devilmarkus

Quote from: dlfrsilver on 08:08, 19 May 09JAVA cpc in order to load the games we have online, but impossible to make it load files from another place
than the one "wanted" by the emulator.

How do you want to load the games?

JavaCPC wants to load them in applet modus like: system/cpc/file/filename.... (beginning from folder, where the emulator is in)

If you like, I can add a parameter, which lets JavaCPC use it's root folder as base for games.

You can also try:
<param name="DISC" value="../../../games/arcade/runme.zip">

Not sure, if this works...
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

Just tried this.

It works.
So add ../../../ and you are in JavaCPC.jar root dir.

like in my php script:
http://cpc-live.com/javacpc.php?disc=../../../logo.dsk&doubled=true

This disk is not in system/cpc/file.
It is in the same folder, where JavaCPC.jar is placed.
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

BTW.: Here's my PHP page:

<?php
/*

     ____.                   ____________________________  
    |    |____ ___  _______  \_   ___ \______   \_   ___ \ 
    |    \__  \\  \/ /\__  \ /    \  \/|     ___/    \  \/ 
/\__|    |/ __ \\   /  / __ \\     \___|    |   \     \____
\________(____  /\_/  (____  /\______  /____|    \______  /
              \/           \/        \/                 \/ 

                ___.          
                \_ |__ ___.__.
                 | __ <   |  |
                 | \_\ \___  |
                 |___  / ____|
                     \/\/  

________              .__.__                        __                 
\______ \   _______  _|__|  |   _____ _____ _______|  | ____ __  ______
 |    |  \_/ __ \  \/ /  |  |  /     \\__  \\_  __ \  |/ /  |  \/  ___/
 |    `   \  ___/\   /|  |  |_|  Y Y  \/ __ \|  | \/    <|  |  /\___ \ 
/_______  /\___  >\_/ |__|____/__|_|  (____  /__|  |__|_ \____//____  >
        \/     \/                   \/     \/           \/          \/ 


+ ----------------------------------------------------------------------------+
|     JavaCPC Emulator
|     PHP script
|
|     ©Markus Hohmann 2008 - 2009
|     http://cpc-live.com
|     webmaster@cpc-live.com
|
|     $Revision: 2.6 $
|     $Date: 2009/04/29 12:15:23 $
|     $Author: Devilmarkus $
+----------------------------------------------------------------------------+
*/

$gametitle = !empty($_GET['title']) ? $_GET['title'] : 'JavaCPC - Emulator';
echo
"<title>JavaCPC Emulator - ";
echo 
$gametitle;
echo
"</title>";
echo 
"<script src=\"javacpc_init.js\" type=\"text/javascript\"></script>";


echo
"<table class=\"contentbody\" cellSpacing=\"1\" cellPadding=\"4\" width=\"100%\" border=\"0\"><tr>";
echo 
"<td class=\"heads\">";


echo 
$gametitle;

echo
"</td></tr></table>";



echo 
"<form name=frmSelect method=post><div align=\"center\">";

$system = !empty($_GET['system']) ? $_GET['system'] : 'CPC464'

$patch = !empty($_GET['patch']) ? $_GET['patch'] : 'false'
$audio = !empty($_GET['audio']) ? $_GET['audio'] : 'true'
$menu = !empty($_GET['menu']) ? $_GET['menu'] : 'false'
 if (!empty(
$_GET['doubled'])){
echo 
"<applet name=\"JEMU\" width=\"768\" height=\"544\" code=\"jemu.ui.JEMU.class\" codebase=\"jemu/\">";
echo 
"<param name=\"DOUBLE\" value=\"true\">";
echo 
"<param name=\"TRIPLE\" value=\"false\">";
echo 
"<param name=\"SKINNED\" value=\"false\">";
echo 
"<param name=\"LARGE\" value=\"false\">";
}
else
 if (!empty(
$_GET['tripled'])){
echo 
"<applet name=\"JEMU\" width=\"1152\" height=\"810\" code=\"jemu.ui.JEMU.class\" codebase=\"jemu/\">";
echo 
"<param name=\"DOUBLE\" value=\"false\">";
echo 
"<param name=\"TRIPLE\" value=\"true\">";
echo 
"<param name=\"SKINNED\" value=\"false\">";
echo 
"<param name=\"LARGE\" value=\"false\">";
}
else
 if (!empty(
$_GET['full'])){
echo 
"<applet name=\"JEMU\" width=\"768\" height=\"544\" code=\"jemu.ui.JEMU.class\" codebase=\"jemu/\">";
echo 
"<param name=\"LARGE\" value=\"true\">";
echo 
"<param name=\"DOUBLE\" value=\"false\">";
echo 
"<param name=\"TRIPLE\" value=\"false\">";
echo 
"<param name=\"SKINNED\" value=\"false\">";
}
else
{
echo 
"<applet name=\"JEMU\" width=\"384\" height=\"272\" code=\"jemu.ui.JEMU.class\" codebase=\"jemu/\">";
echo 
"<param name=\"SKINNED\" value=\"false\">";
echo 
"<param name=\"DOUBLE\" value=\"false\">";
echo 
"<param name=\"TRIPLE\" value=\"false\">";
echo 
"<param name=\"LARGE\" value=\"false\">";
}
echo 
"<param name=\"archive\" value=\"JavaCPC.jar\">";
echo 
"<param name=\"SELECTOR\" value=\"false\">";
echo 
"<param name=\"BUTTONS\" value=\"false\">";
echo 
"<param name=\"BORDER\" value=\"false\">";
echo 
"<param name=\"OSD\" value=\"false\">";
echo 
"<param name=\"COMPUTER\" value=\"".$system."\">";
echo 
"<param name=\"MENU\" value=\"".$menu."\">";
echo 
"<param name=\"CPATCH\" value=\"".$patch."\">";

if (!empty(
$_GET['samplerate'])){
$sample $_GET['samplerate'];
echo 
"<param name=\"SAMPLERATE\" value=\"".$sample."\">";
}

if (!empty(
$_GET['scanlines'])){
$scan $_GET['scanlines'];
echo 
"<param name=\"SCANLINES\" value=\"".$scan."\">";
} else {
echo 
"<param name=\"SCANLINES\" value=\"false\">";
}
if (!empty(
$_GET['bilinear'])){
$bi $_GET['bilinear'];
echo 
"<param name=\"BILINEAR\" value=\"".$bi."\">";
} else {
echo 
"<param name=\"BILINEAR\" value=\"false\">";
}
if (!empty(
$_GET['scaneffect'])){
$scane $_GET['scaneffect'];
echo 
"<param name=\"SCANEFFECT\" value=\"".$scane."\">";
} else {
echo 
"<param name=\"SCANEFFECT\" value=\"false\">";
}

if (!empty(
$_GET['digiblaster'])){
$digi $_GET['digiblaster'];
echo 
"<param name=\"DIGIBLASTER\" value=\"".$digi."\">";
}
if (!empty(
$_GET['cheat'])){
$cheat $_GET['cheat'];
echo 
"<param name=\"CHEAT\" value=\"".$cheat."\">";
}
if (!empty(
$_GET['digitracker'])){
$dt $_GET['digitracker'];
echo 
"<param name=\"DIGITRACKER\" value=\"".$dt."\">";
}
if (!empty(
$_GET['expansion'])){
$exp $_GET['expansion'];
echo 
"<param name=\"EXPANSION\" value=\"".$exp."\">";
}
if (!empty(
$_GET['monitor'])){
$monitor $_GET['monitor'];
echo 
"<param name=\"MONITOR\" value=\"".$monitor."\">";
} else {
echo 
"<param name=\"MONITOR\" value=\"COLOR\">";
}
if (!empty(
$_GET['joystick'])){
$joystick $_GET['joystick'];
echo 
"<param name=\"JOYSTICK\" value=\"".$joystick."\">";
}
if (!empty(
$_GET['options'])){
$opt $_GET['options'];
echo 
"<param name=\"OPTIONS\" value=\"".$opt."\">";
}
if (!empty(
$_GET['printer'])){
$printer $_GET['printer'];
echo 
"<param name=\"PRINTER\" value=\"".$printer."\">";
}
if (!empty(
$_GET['vhold'])){
$vhold $_GET['vhold'];
echo 
"<param name=\"VHOLD\" value=\"".$vhold."\">";
}
if (!empty(
$_GET['unprotect'])){
$unprot $_GET['unprotect'];
echo 
"<param name=\"UNPROTECT\" value=\"".$unprot."\">";
}
if (!empty(
$_GET['snapshot'])){
$snap $_GET['snapshot'];
echo 
"<param name=\"FILE\" value=\"".$snap."\">";
}
if (!empty(
$_GET['floppysound'])){
$flops $_GET['floppysound'];
echo 
"<param name=\"FLOPPYSOUND\" value=\"".$flops."\">";
}
if (!empty(
$_GET['autotype'])){
$autotype $_GET['autotype'];
echo 
"<param name=\"AUTOTYPE\" value=\"".$autotype."\">";
}
if (!empty(
$_GET['cng'])){
$cng $_GET['cng'];
echo 
"<param name=\"CNG\" value=\"".$cng."\">";
}
if (!empty(
$_GET['memory'])){
$mem  $_GET['memory'];
echo 
"<param name=\"MEMORY\" value=\"".$mem."\">";
}
if (!empty(
$_GET['tape'])){
$tape  $_GET['tape'];
echo 
"<param name=\"DISC\" value=\"".$tape."\">";
echo 
"<param name=\"AUTOLOAD\" value=\"launchtape\">"
}
if (!empty(
$_GET['disc'])){
$disc $_GET['disc'];
echo 
"<param name=\"DISC\" value=\"".$disc."\">";
}
if (!empty(
$_GET['disc_b'])){
$disc_b $_GET['disc_b'];
echo 
"<param name=\"DISCB\" value=\"".$disc_b."\">";
}
if (!empty(
$_GET['mousejoy'])){
$mousejoy $_GET['mousejoy'];
echo 
"<param name=\"MOUSEJOY\" value=\"".$mousejoy."\">";
}
if (!empty(
$_GET['boot'])){
$boot $_GET['boot'];
echo 
"<param name=\"AUTOLOAD\" value=\"".$boot."\">"
}

echo 
"</applet>";
if (!empty(
$_GET['audio'])){
echo 
"<script type=\"text/javascript\">";
echo 
"document.JEMU.setAudio(".$audio.");";
echo 
"</script>";
}


echo
"<br><table border=\"0\" style=\"border-collapse: collapse\"><tr>";

        
        if (!empty(
$_GET['discb'])){
        echo 
"<td align=\"center\" width=\"150\">";
        echo 
"Click on a disc if you need to change</td>";            }
        

        if (!empty(
$_GET['discb'])){
        echo 
"<td align=\"center\" width=\"50\">";
        echo 
"<a onclick=\"document.JEMU.loadFile('".$disc."');\">";
        echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$disc."</td>";
        }
            
        if (!empty(
$_GET['discb'])){
        
$discb $_GET['discb'];
        echo 
"<td align=\"center\" width=\"50\">";
        echo 
"<a onclick=\"document.JEMU.loadFile('".$discb."');\">";
        echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$discb."</td>";
        }
        echo
"</td>";

        if (!empty(
$_GET['discc'])){
        
$discc $_GET['discc'];
        echo 
"<td align=\"center\" width=\"50\">";
        echo 
"<a onclick=\"document.JEMU.loadFile('".$discc."');\">";
        echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$discc."</td>";
        }
        echo
"</td>";
        if (!empty(
$_GET['discd'])){
        
$discd $_GET['discd'];
        echo 
"<td align=\"center\" width=\"50\">";
        echo 
"<a onclick=\"document.JEMU.loadFile('".$discd."');\">";
        echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$discd."</td>";
        }
        echo
"</td></tr>";
        if (!empty(
$_GET['disce'])){
        
$disce $_GET['disce'];
        echo 
"<tr><td align=\"center\" width=\"50\">";
echo 
"<a onclick=\"document.JEMU.loadFile('".$disce."');\">";        
echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$disce."</td>";
        }
        echo
"</td>";
        
        if (!empty(
$_GET['discf'])){
        
$discf $_GET['discf'];
        echo 
"<td align=\"center\" width=\"50\">";
echo 
"<a onclick=\"document.JEMU.loadFile('".$discf."');\">";        
echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$discf."</td>";
        }
        echo
"</td>";
        
        if (!empty(
$_GET['discg'])){
        
$discg $_GET['discg'];
        echo 
"<td align=\"center\" width=\"50\">";
echo 
"<a onclick=\"document.JEMU.loadFile('".$discg."');\">";        
echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$discg."</td>";
        }
        echo
"</td>";
        if (!empty(
$_GET['disch'])){
        
$disch $_GET['disch'];
        echo 
"<td align=\"center\" width=\"50\">";
echo 
"<a onclick=\"document.JEMU.loadFile('".$disch."');\">";        
echo 
"<img src=\"3inch_dsk.gif\" border=\"0\"></a><br>".$disch."</td>";
        }
    echo
"</tr></table><p>";


echo 
"<INPUT type=\"button\" VALUE=\"Reset\" onClick=\"document.JEMU.resetComputer();\">";
echo 
"<INPUT type=\"button\" VALUE=\"Reboot\" onClick=\"document.JEMU.reBoot();\">";
echo 
"<INPUT type=\"button\" VALUE=\"Quit\" onClick=\"document.JEMU.Quit();\"><br>";

if (!empty(
$_GET['audio'])){
echo 
"<input name=\"cbAudio\" type=\"Checkbox\" onClick=\"toggleAudio();\" value=\"1\"><b>Audio</b>";
} else {
echo 
"<input name=\"cbAudio\" type=\"Checkbox\" onClick=\"toggleAudio();\" value=\"1\" checked><b>Audio</b>";
}

echo 
"<input name=\"cbJoy\" type=\"Checkbox\" onClick=\"toggleJoystick();\" value=\"1\"><b>Q,A,O,P - SPACE/CTRL Joystick</b>";
echo 
"<input name=\"cbTurbo\" type=\"Checkbox\" onClick=\"toggleTurbo();\" value=\"1\"><b>Turbo</b><br>";

if (!empty(
$_GET['doubled'])){
echo 
"<input name=\"cbDoubleSize\" type=\"Checkbox\" onClick=\"toggleDoubleSize();\" value=\"3\" checked><b>Double size</b>";
//echo "<script type=\"text/javascript\">toggleDoubleSize();</script>";
}
else {

echo 
"<input name=\"cbDoubleSize\" type=\"Checkbox\" onClick=\"toggleDoubleSize();\" value=\"3\"><b>Double size</b>";
}

if (!empty(
$_GET['full'])){
echo 
"<input name=\"cbFullSize\" type=\"Checkbox\" checked onClick=\"toggleFullSize();\" value=\"1\"><b>Full GateArray</button>";

}
else {
echo 
"<input name=\"cbFullSize\" type=\"Checkbox\" onClick=\"toggleFullSize();\" value=\"1\"><b>Full GateArray</button>";
}

echo
"</form><br>";

echo 
"<a href=\"#\" onClick=\"history.go(-1)\">Back</a></div>";

?>
<body bgcolor="#0D0E0F" text="#FFFF99">
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

You also need javacpc_init.js in the same folder:
function appletLoaded() {
    var f = document.frmSelect;
    if (f.cbComputer.options.length == 0) {
      populateSelect(f.cbComputer,document.JEMU.getComputers(),0,0);
      populateSelect(f.cbGame,document.JEMU.getFiles(),1,0);
    }

  }
function appletStarted() {
    var f = document.frmSelect;
    populateSelect(f.cbGame,document.JEMU.getFiles(),1,0);
  }

  function selectComputer() {
    var f = document.frmSelect;
    var o = f.cbComputer.options;
    document.JEMU.setComputer(o[f.cbComputer.selectedIndex].value);
    populateSelect(f.cbGame,document.JEMU.getFiles(),1,0);
  }

  function selectGame() {
    var f = document.frmSelect;
    var o = f.cbGame.options;
    var value = o[f.cbGame.selectedIndex].value;
    if (value != "") {
      if (document.JEMU != "") {
        document.JEMU.loadFile(value);
        document.JEMU.focus();
      }
    } 
  }

  function resetComputer() {
    var f = document.frmSelect;
    //f.cbGame.selectedIndex = 0;
    document.JEMU.resetComputer();
    document.JEMU.focus;
  }
  function OpenMenu() {
    document.JEMU.MenuCheck();
    document.JEMU.focus;
  }

  function ejectComputer() {
    var f = document.frmSelect;
    f.cbGame.selectedIndex = 0;
    document.JEMU.ejectComputer();
    document.JEMU.focus;
  }

  function loaddata() {
    document.JEMU.insertDisk();
    document.JEMU.focus;
  }
  function Quit() {
    document.JEMU.Quit();
  }

  function toggleFullSize() {
    fullSize = document.frmSelect.cbFullSize.checked;
    document.JEMU.setFullSize(fullSize);
    w = document.JEMU.getPreferredSize().width;
    h = document.JEMU.getPreferredSize().height;
    document.JEMU.width = w;
    document.JEMU.height = h;
    document.JEMU.focus();
  }

function setSize(){
    document.JEMU.width = 384;
    document.JEMU.height = 270;
    document.JEMU.focus();
}
  function toggleDoubleSize() {
    doubleSize = document.frmSelect.cbDoubleSize.checked;
    document.JEMU.setDoubleSize(doubleSize);
    w = document.JEMU.getPreferredSize().width;
    h = document.JEMU.getPreferredSize().height;
    document.JEMU.width = w;
    document.JEMU.height = h;
    document.JEMU.focus();
  }

  function toggleTripleSize() {
    tripleSize = document.frmSelect.cbTripleSize.checked;
    document.JEMU.setTripleSize(tripleSize);
    w = document.JEMU.getPreferredSize().width;
    h = document.JEMU.getPreferredSize().height;
    document.JEMU.width = w;
    document.JEMU.height = h;
    document.JEMU.focus();
  }

  function toggleAudio() {
      Audio = document.frmSelect.cbAudio.checked;
      document.JEMU.setAudio(Audio);   
      document.JEMU.focus();
      }

  function toggleFloppy() {
      Floppy = document.frmSelect.cbFloppy.checked;
      document.JEMU.setFloppy(Floppy);   
      document.JEMU.focus();
      }

  function toggleJoystick() {
      Joystick = document.frmSelect.cbJoy.checked;
      document.JEMU.setJoy(Joystick);   
      document.JEMU.focus();
      }

  function toggleTurbo() {
      Turbo = document.frmSelect.cbTurbo.checked;
      document.JEMU.setTurbo(Turbo);   
      document.JEMU.focus();
      }

  function populateSelect(select,vector,leave,index) {
    var o = select.options;
    if (leave == 1)
      o[0].text = "(None)";
    var i;
    for (i = o.length - 1; i >= leave; i--)
      o[i] = null;
    for (i = 0; i < vector.size(); ) {
      var option = new Option(vector.elementAt(i++));
      option.value = vector.elementAt(i++);
      o[leave++] = option;
    }
    select.selectedIndex = index;
  }
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

dlfrsilver

Thanks for all those :)

I have a question, samp2cdt would need to be updated, and it appears that kevin thacker is busy nowadays :(

Could you help us to support new decoding scheme ?


Devilmarkus

#10
Quote from: dlfrsilver on 01:03, 21 May 09Thanks for all those :) I have a question, samp2cdt would need to be updated, and it appears that kevin thacker is busy nowadays :( Could you help us to support new decoding scheme ?


I don't know about converting WAV->CDT.
JavaCPC uses a conversion of TZX2WAV (v0.2b (PC/Windows)     by Francisco Javier Crespo).

It has been converted to JAVA by John Girvin / http://www.girv.net (especially for useage in JavaCPC)
So I am sorry. but I cannot help there...

But I know, that Kev is still active... So perhaps ask him.

When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

Some info about work-in-progress:
Next JavaCPC (6.4) will come with keyboard recording/playback function.

It is already working...
You can check it here:
Keyboard playback demonstration

You should see the game "Cauldron" and it should play automatically until the hag has found the lava pod in a cave... After this, you can continue playing using right number pad & num-lock on.
Still needs some testing....
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

Working hard on CRTC-emulation...
Added "CRTC 0" and "CRTC 1" emulation (still very basically but useful for some demos).

An overview:
(CRTC 1)
Demo: TWIST (part of Demo Iz Art)
JEMU (base, not sure if should emulate 0 or 1):


JavaCPC (CRTC type 0)


JavaCPC (CRTC type 1)


Another example:
Overflow preview 1 (Shadow of the beast scroller)
JEMU (CRTC unknown)


JavaCPC (CRTC 0)


Last example: Anthology demo, first part:
JEMU (CRTC unknown)


JavaCPC (CRTC 0/1)


All 3 examples show different handlings in CRTC emulation:
- TWIST part: Needs to update screen base address
- Overflow preview 1: CPU timing correction & REG 3 corrections
- Anthology: Needs to reset vSyncCount in setRegister

I hope, that I can learn more about CRTC emulation and make it quite better...
But also the updates, I already made, look impressive (my opinion)

Perhaps Richard could/wants to help me to make CRTC emulation better and more exact...  ;)
(I would like it)
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Devilmarkus

More progress in CRTC emulation:
h-position correction...
Some demos were x-shifted in display. This I fixed today.
Now also the demo "The Demo" works fully!
Screenshots:
http://cpc-live.com/thedemo
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Gryzor

Is there a reason I only get a mere 12 fps with http://cpc-live.com/javacpc.php?system=CPC6128&disc=DemoIzArt.zip&full=true&bilinear=true&scanlines=true&scaneffect=true&title=Demo%20Iz%20Art&crtc=1&boot=dia ? What is the parameter that screws things up?

Win7, Sun Java and a quad Phenom should do the trick really... :D

Devilmarkus

When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Gryzor

Latest gfx drivers, embedded sound drivers (framerate is low even with sound off).

This configuration works fine (around 48-50 fps), I guess it's all the graphical trickery that does it in... A shame :(

Devilmarkus

Quote from: Gryzor on 17:42, 14 June 09
Latest gfx drivers, embedded sound drivers (framerate is low even with sound off).

This configuration works fine (around 48-50 fps), I guess it's all the graphical trickery that does it in... A shame :(

Double click with right mouse button into the applet -> this opens JavaCPC menu -> Select: Settings -> Low Performance PC (This will be stored in config file) So you can click also on links including GFX filters/effects...
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

dlfrsilver

Hi Markus, i have uploaded many new games with some interesting protection schemes ;)

Devilmarkus

Quote from: dlfrsilver on 06:47, 15 June 09
Hi Markus, i have uploaded many new games with some interesting protection schemes ;)

Link?
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Gryzor

Quote from: CPC-Live on 20:51, 14 June 09
Double click with right mouse button into the applet -> this opens JavaCPC menu -> Select: Settings -> Low Performance PC (This will be stored in config file) So you can click also on links including GFX filters/effects...

But I *don't* have a low-performance PC! That's the issue...

Devilmarkus

#21
Quote from: Gryzor on 17:39, 15 June 09
But I *don't* have a low-performance PC! That's the issue...

But something is running with very low performance on your PC... I have an Intel P4 dual core, 3ghz, NVidia GeForce 6800 GT pro and WinXP Pro... Everything works nice here.

(Perhaps you are using a Win7 beta?)
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

dlfrsilver


Devilmarkus

Quote from: dlfrsilver on 19:11, 15 June 09
Check Phénix informatique Site ;)

Phenix site is huge... Should i download all 324902659864 games?  ;D
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release


Powered by SMFPacks Menu Editor Mod