CPCWiki forum

General Category => Emulators => Topic started by: Devilmarkus on 22:23, 27 April 09

Title: JavaCPC 6.3 released
Post by: Devilmarkus on 22:23, 27 April 09
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 (http://cpc-live.com/)

Have fun!
Markus
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 11:27, 28 April 09
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:
(http://cpc-live.com/breakpoint.gif)
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 17:06, 15 May 09
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...
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 15:46, 16 May 09
Some news:
- Next version of JavaCPC will also be able to load MP3-tapes! (Like games from amstradeus.com website)

Preview: HERE (http://cpc-live.com/videos/mp3/)

Still trying to optimize MP3toWAV routines...
Title: Re: JavaCPC 6.3 released
Post by: dlfrsilver on 10:08, 19 May 09
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 !
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 11:16, 19 May 09
Quote from: dlfrsilver on 10: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...
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 11:22, 19 May 09
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 (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.
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 11:29, 19 May 09
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">
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 11:32, 19 May 09
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;
  }
Title: Re: JavaCPC 6.3 released
Post by: dlfrsilver on 03:03, 21 May 09
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 ?

Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 12:30, 21 May 09
Quote from: dlfrsilver on 03: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 (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.

Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 01:44, 09 June 09
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 (http://cpc-live.com/javacpc.php?system=CPC6128&keys=hexenkueche.snk&title=Keyboard%20playback%20demonstration&doubled=true&bilinear=true&scanlines=true&scaneffect=true&snapshot=hexenkueche.snz)

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....
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 23:01, 10 June 09
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):
(http://cpc-live.com/twist_jemu.png)

JavaCPC (CRTC type 0)
(http://cpc-live.com/twist.png)

JavaCPC (CRTC type 1)
(http://cpc-live.com/twist_fixed.png)

Another example:
Overflow preview 1 (Shadow of the beast scroller)
JEMU (CRTC unknown)
(http://cpc-live.com/prev1_jemu.png)

JavaCPC (CRTC 0)
(http://cpc-live.com/prev1.png)

Last example: Anthology demo, first part:
JEMU (CRTC unknown)
(http://cpc-live.com/antho_jemu.png)

JavaCPC (CRTC 0/1)
(http://cpc-live.com/antho.png)

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)
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 23:53, 12 June 09
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
Title: Re: JavaCPC 6.3 released
Post by: Gryzor on 14:50, 14 June 09
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
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 15:57, 14 June 09
Quote from: Gryzor on 14:50, 14 June 09
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 (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

Check your sounddrivers...
Check your GFX drivers...

Also try this URL instead:
http://cpc-live.com/javacpc.php?system=CPC6128&disc=DemoIzArt.zip&full=true&bilinear=false&scanlines=false&scaneffect=false&title=Demo Iz Art&crtc=1&boot=dia (http://cpc-live.com/javacpc.php?system=CPC6128&disc=DemoIzArt.zip&full=true&bilinear=false&scanlines=false&scaneffect=false&title=Demo%20Iz%20Art&crtc=1&boot=dia)
Title: Re: JavaCPC 6.3 released
Post by: Gryzor on 19: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 :(
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 22:51, 14 June 09
Quote from: Gryzor on 19: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...
Title: Re: JavaCPC 6.3 released
Post by: dlfrsilver on 08:47, 15 June 09
Hi Markus, i have uploaded many new games with some interesting protection schemes ;)
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 13:43, 15 June 09
Quote from: dlfrsilver on 08:47, 15 June 09
Hi Markus, i have uploaded many new games with some interesting protection schemes ;)

Link?
Title: Re: JavaCPC 6.3 released
Post by: Gryzor on 19:39, 15 June 09
Quote from: CPC-Live on 22: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...
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 20:40, 15 June 09
Quote from: Gryzor on 19: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?)
Title: Re: JavaCPC 6.3 released
Post by: dlfrsilver on 21:11, 15 June 09
Quote from: CPC-Live on 13:43, 15 June 09
Link?

Check Phénix informatique Site ;)
Title: Re: JavaCPC 6.3 released
Post by: Devilmarkus on 22:16, 15 June 09
Quote from: dlfrsilver on 21:11, 15 June 09
Check Phénix informatique Site ;)

Phenix site is huge... Should i download all 324902659864 games?  ;D
Title: Re: JavaCPC 6.3 released
Post by: dlfrsilver on 01:37, 16 June 09
http://www.phenixinformatique.com/CPCGAMES/index.php?page=lastupdate
Powered by SMFPacks Menu Editor Mod