Quote from: nurgle on 01:08, 14 September 10
Btw.: I just played Bombjack, and although I know there is no sound I swear I could hear all the sound effects I know very very faint. I even turned the volume nob on my speakers to reassure me that it is just my imagination. The human mind is a strange thing. :)
Quote from: Alcofribas on 14:45, 14 September 10
http://www.haverford.edu/psych/ddavis/p109g/proust.html
Quote from: Gryzor on 10:30, 15 September 10
That was a great one...
Quote from: TFM/FS on 05:54, 04 October 10
I got a $4000 Laptop, and that CPC in a Java Box tells me that it won't run with my browser... So, which browser is the browser of choice to use it?
Quote from: phi2x on 09:49, 05 October 10
Are you dumb or something ?
It's clearly stated on the website.
Quote from: phi2x on 09:49, 05 October 10
Are you dumb or something ?
It's clearly stated on the website.
Quote from: remax on 14:42, 06 October 10
You only surf with your integrated browser? :D
Quote from: Xyphoe on 07:14, 06 October 10
TFM - It's using the new HTML5 standard for it's clever stuff, only some browsers will work 'properly' with this and other HTML5 based bits and bobs. The latest version of Google Chrome will do the trick. Running the site in Firefox on a very high end PC will still end up with stutter.
QuoteAre you dumb or something ?Could be seen as joke, could be not.
It's clearly stated on the website.
Quote from: phi2x on 21:54, 06 October 10
I won't take the bait. But you are reported to moderation.
Quote from: Devilmarkus on 23:16, 06 October 10
And you, TFM, indeed, I don't know what to say about your comment, and I also don't quote it.
But your manner is also not the best here and not very appreciated.
Quote from: TFM/FS on 23:19, 06 October 10
So please _where exactly_ my manners are questionable?
Quote from: Devilmarkus on 23:20, 06 October 10
You don't really want to disuss this now, do you?
Quote from: Devilmarkus on 23:31, 06 October 10
Well, we German say: "Wie es in den Wald hineinschallt, so schallt es auch heraus".
(Means: As we shout in the forest, thats how the echo comes back)
Quote from: Devilmarkus on 23:31, 06 October 10
You make such a noise here because a stupid reply.
Well, really, don't you think, you are a bit over-sensible?
Quote from: Devilmarkus on 23:31, 06 October 10
But no problem, tomorrow this thread will be deleted.
Quote from: TFM/FS on 23:40, 06 October 10
Why don't you care about important things, stop others from real insults. Because we all know, this post from this guy was not a joke!
Quote from: phi2x on 23:50, 06 October 10
Yep you nailed it. My response was not to be taken literally.
Quote from: Devilmarkus on 23:44, 06 October 10
But:
Think this:
I ask you, how to add FutureOS roms into my emulator.
You reply:
Hey are you stupid? The roms are ...
Quote from: phi2x on 23:50, 06 October 10
bla...bla....bla And I still think TFM/FS deserved it, no matter how hard it is for him to swallow it.
Quote from: TFM/FS on 23:54, 06 October 10
Well, I never would do that! And that's the difference!!! 8)
Quote from: phi2x on 09:49, 05 October 10First line was not needed, second could have been worded better.
Are you dumb or something ?
It's clearly stated on the website.
Quote from: arnoldemu on 11:32, 07 October 10
(http://cpc-live.com/chrome.png)
Sorry I will not try Chrome. I don't want to give my life to Google.
But keep on going, it is looking promising.
Quote from: Devilmarkus on 11:41, 07 October 10
Well, dear Apple, you can ask me for my account number, IBAN and BIC via PM
Quote from: phi2x on 15:54, 07 October 10All I do is pushing the canvas every time I finished rendering a frame and the rest is automagically taken care of by the browser.
Quote from: Gryzor on 10:42, 18 October 10The HTML5 video tag will let you play back videos with audio, but it's a whole different kettle of fish if you want to generate audio programmatically
But, wait, I thought that there are HTML-based video players that also play audio?
Quote from: phi2x on 20:21, 18 October 10
And that's not even mentioning the fact that, due to the added computations, AY sound emulation would slowdown CPCBox even more :(
Quote from: Gryzor on 20:44, 30 October 10
Yeah, well, 9-10fps :D
Quote from: Octoate on 01:02, 31 October 10
On my PC at work (Quad core) I get 40fps with Opera 10.63.
On my notebook at home (Core 2 Duo 2GHz) with Opera 10.63 I get 28fps.
Quote from: Gryzor on 13:49, 23 November 10
Wow... but which Chrome branch? They have like a zillion out there...
Quote from: phi2x on 19:43, 16 December 10
For CPC-Topsites, I'm not comfortable associating CPCBox with a site picturing a nearly nude girl on the frontpage. :o
And to tell you the truth, I think that CPCWiki would be a much better place to reference CPC websites.
Quote from: Ghost on 14:03, 11 January 11winape, arnold and mess emulate 6128+.
Hi !!!
Is there some emulator for 6128+ ?
Quote from: Ghost on 21:25, 13 January 11I am thinking more that the cpc+ raster interrupts are not working correct here.
Yeah great :)
For the menu, you must make the GA gestion of the multimode. RMR register: See it: http://www.grimware.org/doku.php/documentations/devices/gatearray (http://www.grimware.org/doku.php/documentations/devices/gatearray)
with GA adressage (#7f)
if bit 7 and 6 are :%10 then bit 0 an 1 are screenmode... Just use it ;)
Quote from: phi2x on 16:26, 09 February 11
Also, CPC function keys are now mapped to PC function keys (in addition to numpad keys). So it's now possible to use CPC function keys on laptops.
Quote from: mr_lou on 21:45, 18 February 11
Since it's written in Javascript, and modern phones support Javascript... I wonder if it'll run on an Android device.
Gryzor, have you tried that?
Quote from: Mochilote on 11:45, 19 February 11
Hi to all, i have tried it on iphone4 latest IOS but it don't work, it shows "Your browser doesn't support HTML5 File API".
Quote from: Gryzor on 08:38, 10 March 11
38 fps while running 1943 on my Quad AMD x64, using Canary as ever :)
Quote from: phi2x on 20:42, 12 March 11
And here is the post from those Russians that caused havoc :D in the emu scene: http://zx.pk.ru/showpost.php?p=43800 (http://zx.pk.ru/showpost.php?p=43800)
Quote from: phi2x on 04:35, 12 March 11Good result!
As of today, I'm proud to announce that CPCBox has passed all Zexall tests successfully! 8)
I've personally tested several CPC emulators (WinAPE, CPCE, Caprice32, Arnold, JavaCPC, PC-CPC and WinCPC) under Zexall. They all fail at it to some degree. >:(
Quote from: phi2x on 12:41, 15 March 11
That's the major letdown. And Opera 11 is also plagued by this :(
The only possible workaround here is to do a browser specific path to handle those faked HTML5 browsers.
Quote from: phi2x on 13:59, 15 March 11
Android... iphone... wut!?
Seriously guys, you have unreasonable expectations. We're talking about a Javascript CPC emulator here...
Even if it'd happened to work, performance would be abysmal.
Quote from: Gryzor on 19:42, 19 March 11Urin' Upper is kewl!
Urning Ubber! ell f ame!!!
Quote from: phi2x on 01:09, 22 March 11
edit: You're right, a warning is probably the smartest thing to do.
Quote from: phi2x on 15:04, 04 May 11
That would be the hard way. There are plenty of great open-source emulators to "spy" upon, if that's your thing: Caprice, Arnold, JavaCPC...
Quote from: Gryzor on 09:34, 16 June 11
So please do explain to us how it's done, once you done it :)
<script type="polskiskript" src="kurva.ps">
initSingers();
polski1.ifNotSings(){
throw_forehead1_against_box();
}
polski2.ifNotSings(){
throw_forehead2_against_box();
}polski3.ifNotSings(){
throw_forehead3_against_box();
}
</script>
Quote from: Devilmarkus on 14:43, 16 June 11
kurva.ps
Quote from: MaV on 14:45, 16 June 11
You - of course - know what kurva means in Polish. :laugh:
Quote from: Devilmarkus on 14:43, 16 June 11
Simple: He will embed 3 Polish people (For each AY channel 1).
Quote from: Gryzor on 14:37, 21 June 11
Hm; I've got an ancient ATI 1600 with 512MB (only reason is because it doesn't need a fan... it's usually more than enough for everything save modern games) and I enabled webgl and still get 28-32fps on my quad Athlon II X4 @2.9GHz. So sound sounds awful, too, but hey, it works!!
FF5 works even slower, at 25fps :(
And yes, I had unmuted sound, don't know why it didn't work before :p
Quote from: Gryzor on 09:42, 22 June 11
Oh god. I'm getting about 6fps with that test. Also, although I just installed the last drivers ATI released for my card, inf FF it reads: GPU Accelerated Windows:0/1.
Also:
Direct2D Enabled: Blocked on your graphics driver. Try updating your graphics driver to version 10.6 or newer.
DirectWrite Enabled: false (6.1.7601.17563, font cache n/a)
Wtf, do I need a new video card to run the web now? Crap...
Quote from: mcklain on 10:27, 22 June 11
It has a Geforce GTX560Ti, maybe nVidia performs better.
Quote from: Devilmarkus on 12:11, 22 June 11Also this would make no sense... We both play "The Witcher 2" with many enabled details... And a fucking 768x272 screen should be too slow? :laugh: :laugh: :laugh: :laugh:
Quote from: mcklain on 12:21, 22 June 11
Gotta tell you... I touched some setting on the motherboard (auto overclocking whatever) and now all the games run faster :laugh:
Quote from: phi2x on 12:18, 22 June 11
Yeah, I know. Haters gonna hate! ::)
http://knowyourmeme.com/memes/haters-gonna-hate (http://knowyourmeme.com/memes/haters-gonna-hate)
Quote from: mahlemiut on 15:45, 22 June 11
So 409 seconds is not a good score in that test, huh? :-[
Quote from: phi2x on 20:48, 21 June 11
So try this benchmark on Firefox:
http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html (http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html)
Quote from: phi2x on 12:06, 22 June 11
So now you know!
Actually the graphics requirement are not high, hardware acceleration is only used to perform canvas stretching. The only barrier is the Firefox drivers blacklist.
So if you have an integrated graphics chip on your motherboard, it can prove useful to unplug your graphics card and use the integrated graphics instead.
Also, keep in mind that Chrome and Opera are working right now on supporting hardware acceleration. And hopefully their drivers blacklist won't be the same as the one in Firefox ;)
And in the longer run, we have W3C working right now on defining Web Audio API, which will be the standard audio output API for browsers.
Quote from: Devilmarkus on 20:04, 22 June 11
Well I still think I missed something... :D
I also ran this test: Using Firefox 5
Quote from: phi2x on 12:43, 07 July 11
To go further into emulation, what's now needed is mimicking the synchronisation lag between the CRTC and the Gate Array output.
As I implemented CPCBox, there is actually no delay between those 2 chips. It makes things simpler for a code point of view, and it enables nice optimizations.
But at the end of it, it's not how the real thing works.
I tried my best to hack around to mitigate the side effects. But some demos are impossible to fix due to this synchronisation issue, and so it claims for proper emulation!
I've thought a little about it. Implications are enormous from a code point of view. Making proper emulation of this synchronization delay will be CPU intensive, and I'll have to ditch the optimization tricks I used that won't fit anymore. :(
Is it worth it, just to be able to fix a handful of demos? Given how slow CPCBox currently is, I'm not sure. But it's bothering the heck out of me. >:(
Quote from: phi2x on 13:00, 07 July 11
That's another synchronisation issue: synchronisation between Z80 and GA. There is a 0.5µs lag between these 2 chips. Palette is modified right in the middle of a Z80 "µs cyle".
It's really the worst of those synchronization issues. And it's interesting to note that no emulator emulates this. I don't plan to do it either!
Quote from: phi2x on 19:42, 08 July 11
I tried to get it working but with no luck at the moment. I can make those effects work but then there are glitches that appear in other demos, so i've not enabled it :(
// Some scrollers use register 8 (CRTC 0)
// and register 6 (CRTC 1). This routine makes them visible
// JavaCPC is the only known emulator which emulates booth correct!
public void checkHDisp() {
if (hDisp) {
if (CRTCType == 0) {
if ((reg[8] & 0x030) == 0x30) {
listener.hDispEnd();
} else if ((reg[8] & 0x030) == 0x00) {
listener.hDispStart();
}
} else {
if (reg[6] != 0) {
listener.hDispStart();
} else {
listener.hDispEnd();
}
}
}
}
Quote from: Executioner on 02:44, 09 July 11
@Markus, it appears JavaCPC most likely delays the palette change one whole extra microsecond for you to get the correct screen output on Vanity.
Quote from: mcklain on 18:42, 28 August 11
Now it just needs to ask for less resources :P
Quote from: mcklain on 18:42, 28 August 11
Now it just needs to ask for less resources :P
Quote from: phi2x on 18:33, 29 August 11
Nope, I'm not interested at all in seeing CPCBox used on other websites.
In fact, this is partly why CPCBox is NOT an open-source project, to block this kind of initiative to happen!
But you have more interesting alternatives anyway: I think you should work with DevilMarkus on that project.
His online Java emulator is open-source. And it is already used on different websites, like cpc-power.com (http://cpc-power.com/)
Another advantage is that its emulator is accurate AND fast. So it would certainly fit better with what you're trying to do ;)
Quote from: phi2x on 18:33, 29 August 11
Nope, I'm not interested at all in seeing CPCBox used on other websites.
In fact, this is partly why CPCBox is NOT an open-source project, to block this kind of initiative to happen!
Quote from: Gryzor on 11:41, 30 August 11
An emulation community's prime aim, raison d'être and -really- survival prerequisite is sharing and spreading.
Quote from: Gryzor on 12:08, 30 August 11
...and Phi2x wins the argument by not agreeing and calling 'bullshit'! Woo-hoo, we broke new ground in logic here! :D
Quote from: phi2x on 12:12, 30 August 11
I do not speak with dishonest people.
Quote from: phi2x on 12:12, 30 August 11
I do not speak with dishonest people. Do not speak to me EVER again.
Quote from: Gryzor on 11:41, 30 August 11You could very well keep the emulator closed but allow it to be used - how on earth would you lose IP then?
Quote from: Devilmarkus on 12:25, 30 August 11
@Gryzor: I want a "Dislike" feature!!!
Quote from: Devilmarkus on 12:25, 30 August 11
@Gryzor: I want a "Dislike" feature!!!
Quote from: MaV on 19:20, 30 August 11
I don't want to know what happens then. It'll be a bloodbath.
Quote from: TFM/FS on 19:27, 30 August 11
Vampires love that!
:P (at the left you see a blood licking smily, at the right the same dude a daylight) 8)
Quote from: phi2x on 22:55, 30 August 11
How can I get out of here?
Going step by step to point out the lies and expose the falsifiers.
I honestly don't know where it'll get us to, but it's time to take a closer look at what has been said here.
Quote from: phi2x on 23:27, 30 August 11Compare it with open-sourcing CPCBox for instance. Other emulator authors would then directly go looking at my code and understand how I perform pixel-accurate rasters!
Can someone explain to me in clear terms what would then be the value of CPCBox?
Then, it would just be a snail slow Javascript emulator where all the advantages were sucked up without effort by his competitors.
Quote from: McKlain on 23:36, 30 August 11
Excuse me but, are we talking about competitors here? In the emulation of an obsolete platform, wich is mostly a hobby for everyone involved on the scene?
Quote from: McKlain on 23:36, 30 August 11
Excuse me but, are we talking about competitors here? In the emulation of an obsolete platform, wich is mostly a hobby for everyone involved on the scene?
Quote from: TFM/FS on 00:04, 31 August 11
Careful with the words! The CPC is not obsolete at all! And for me it's my lifeblood. Else you're right.
Quote from: phi2x on 12:34, 31 August 11
I looked at JavaCPC sourcecode. Well, that code is a complete mess of doing demo detection and patching.
Quote from: phi2x on 12:34, 31 August 11
I looked at JavaCPC sourcecode. Well, that code is a complete mess of doing demo detection and patching.
I saw things like: if (from scratch is detected) then tweak some timings; if (camembert4 is detected) then poke memory; etc...
Yep, there is really stuff like that in JavaCPC!
I'm very sorry for DevilMarkus, but it's up to him to clean that mess. All the necessary information is available on the web. I certainly won't code his emulator for him.
Quote from: McKlain on 00:07, 31 August 11Well, sadly it really doesn't matter what I want... :( But... since you ask.... let's say... a genious system, that is temprary not available in the shelfs ;) And to make a kind of shake hands... well, if you like you can use that sentence also for other 4/8/16/21/27 Bit systems (Some PDP had 21 and 27 bit CPUs).
Would you prefer... discontinued? ;D
Quote from: phi2x on 01:28, 31 August 11But I do. OdieSoft and Prodatron for example. They released a lot of source codes of thier demos and in OdieSofts case also a lot of sources for games. Just take a look outside your borders.
... I don't see that much open-source demos, much less of great demos.
Quote from: steve on 18:18, 31 August 11Right, I forgot that... it's soooo long ago. But I always liked the "divine" numbers of bits.
Don't forget the PDP-8 which had a 12-bit CPU :)
Quote from: phi2xThat's your opinion. And I don't care about it.
Quote from: TFM/FS on 06:43, 01 September 11
Well, let everybody decide for own projects and it's good that way. Any contribution to the scene - in which way ever - is appreciated ;)
Quote from: McKlain on 14:02, 18 January 12Right, thanks for the suggestion (stupid me...). Ran FF 10 nightly and it shot up to 50fps right away! Great sound, too! Finally!!!
You can always try another compilation of firefox like Palemoon (there is a 64bits version) or use a portable version of firefox :)
Quote from: phi2x on 10:48, 25 March 12I remembered that we can upload our game to play it online (tested old beta version of R-Type on it).
CPCBox 20120325 changelog:
- Made a few bugfixes to the FDC emulation. Fixed R-Type 128K :)
QuoteReworked the canvas renderer to use direct 32-bit accessIncrease the framerate ?
Quote from: phi2x on 12:48, 22 June 12
Checking converted files is a task that's a perfect fit for crowdsourcing.
The checking will then be handled by all the people (dumpers, users...) that will be interested in replacing their CDT with PZX. It would be a smooth and gradual replacement.
Quote from: Devilmarkus on 16:03, 01 July 12As you can see, there are also differences between the dithered pixels.I can see a CRTC emulation problem too. :D
Quote from: TotO on 16:14, 01 July 12
I can see a CRTC emulation problem too. :D
The Mode 2 look 1 pixel shifted to the left, no?
protected static final int[] inkTranslateMeasured = {
/*R G B */
0x677867, /*13*/
0x677867, /*27*/
0x0FF878, /*19*/
0xF8F865, /*25*/
0x020850, /* 1*/
0xEF186F, /* 7*/
0x087067, /*10*/
0xF8896F, /*16*/
0xEF186F, /*28*/
0xF8F865, /*29*/
0xF8F821, /*24*/
0xF7F8F8, /*26*/
0xE81F13, /* 6*/
0xF818F8, /* 8*/
0xF88F07, /*15*/
0xF889F8, /*17*/
0x020850, /*30*/
0x0FF878, /*31*/
0x11F80E, /*18*/
0x28F8F8, /*20*/
0x000706, /* 0*/
0x0A10D8, /* 2*/
0x086F08, /* 9*/
0x0F7EF8, /*11*/
0x570F59, /* 4*/
0x78F870, /*22*/
0x80F80C, /*21*/
0x79F8F8, /*23*/
0x510F08, /* 3*/
0x6011E8, /* 5*/
0x677807, /*12*/
0x6F7FF8 /*14*/
};
protected static final int[] inkTranslateGrim = {
/*R G B */
0x6E7D6B, /*13*/
0x6E7D6B, /*27*/
0x00F36B, /*19*/
0xF3F36D, /*25*/
0x00026B, /* 1*/
0xF00268, /* 7*/
0x007868, /*10*/
0xF37D6B, /*16*/
0xF00268, /*28*/
0xF3F36D, /*29*/
0xF3F30D, /*24*/
0xFFF3F9, /*26*/
0xF30506, /* 6*/
0xF302F4, /* 8*/
0xF37D0D, /*15*/
0xFA80F9, /*17*/
0x00026B, /*30*/
0x00F36B, /*31*/
0x02F001, /*18*/
0x0FF3F2, /*20*/
0x000201, /* 0*/
0x0C02F4, /* 2*/
0x027801, /* 9*/
0x0C7BF4, /*11*/
0x690268, /* 4*/
0x71F36B, /*22*/
0x71F504, /*21*/
0x71F3F4, /*23*/
0x6C0201, /* 3*/
0x6C02F2, /* 5*/
0x6E7B01, /*12*/
0x6E7BF6 /*14*/
};
Quote from: phi2x on 03:30, 08 August 12
Did you ever wonder why CPCBox runs so slowly on Chrome?
Yeah, me too...
Look what I found: CPCBox - Tiny JS benchmark (http://cpcbox.com/bench.htm)
:o
Quote from: Bryce on 15:49, 08 August 12Chrome gives me 4 calls/sec.
Firefox 14 on win7 is reporting 74 calls per second. I wouldn't even consider installing Chrome just to find out what it gets.
Quote from: phi2x on 10:42, 04 September 12I don't have iphone / ipad etc so I'm not 100% sure, but I think I read that this rule has been unofficially dropped and there's suddenly a plethora of VM type things, including development environments for interpreted languages.
There's no CPC emulator on iphone because that goes against Apple policy.
Apple forbids and rejects any app that is submitted to them that contains a VM that can execute arbitrary code. :(
Quote from: Bryce on 00:29, 04 September 12On a $4000 laptop (3.6 Ghz) with Windows 7. Not FutureOS! ;)
4 calls/sec??? What's it running on, A C64? :D
Bryce.
Quote from: phi2x on 22:37, 24 September 12
I agree it would be cool to have touchscreen controls, but it's not high priority for me now.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jemu.ui;
import java.awt.event.KeyEvent;
/**
*
* @author Markus
*/
public class KeyTranslator {
protected boolean DEBUG = false;
public KeyEvent translate(KeyEvent g, String localkeys) {
KeyEvent e = g;
// Special CPC keys
if (e.getKeyLocation() != 1) {
// small enter key
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
e.setKeyCode(KeyEvent.VK_END);
}
// F-Key mapping (When joystick is off)
if (Switches.joystick != 1) {
if (e.getKeyCode() == KeyEvent.VK_NUMPAD0) {
e.setKeyCode(KeyEvent.VK_F12);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD1) {
e.setKeyCode(KeyEvent.VK_F1);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD2) {
e.setKeyCode(KeyEvent.VK_F2);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD3) {
e.setKeyCode(KeyEvent.VK_F3);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD4) {
e.setKeyCode(KeyEvent.VK_F4);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD5) {
e.setKeyCode(KeyEvent.VK_F5);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD6) {
e.setKeyCode(KeyEvent.VK_F6);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD7) {
e.setKeyCode(KeyEvent.VK_F7);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD8) {
e.setKeyCode(KeyEvent.VK_F8);
}
if (e.getKeyCode() == KeyEvent.VK_NUMPAD9) {
e.setKeyCode(KeyEvent.VK_F9);
}
}
}
// german keyboard mapping
if (localkeys.equals("DE_DE")) {
if (DEBUG) {
System.out.println("DE: " + e.getKeyChar());
}
if (e.getKeyChar() == '\u00FC' || e.getKeyChar() == '\u00DC') {
e.setKeyCode(KeyEvent.VK_OPEN_BRACKET);
return e;
}
if (e.getKeyChar() == '\u00E4' || e.getKeyChar() == '\u00C4') {
e.setKeyCode(KeyEvent.VK_QUOTE);
return e;
}
if (e.getKeyChar() == '\u00F6' || e.getKeyChar() == '\u00D6') {
e.setKeyCode(KeyEvent.VK_SEMICOLON);
return e;
}
if (e.getKeyChar() == '\u00DF' || e.getKeyChar() == '\u003F') {
e.setKeyCode(KeyEvent.VK_MINUS);
return e;
}
if (e.getKeyCode() == 0x2d) // - key to /
{
e.setKeyCode(KeyEvent.VK_SLASH);
return e;
}
if (e.getKeyCode() == 0x81) // ß key to ^
{
e.setKeyCode(KeyEvent.VK_EQUALS);
return e;
}
if (e.getKeyCode() == 0x99) // <> key to [
{
e.setKeyCode(KeyEvent.VK_ALT_GRAPH);
return e;
}
if (e.getKeyCode() == 0x82) // ^ key to TAB
{
e.setKeyCode(KeyEvent.VK_TAB);
return e;
}
if (e.getKeyCode() == 0x208) // # key to \
{
e.setKeyCode(KeyEvent.VK_BACK_SLASH);
return e;
}
if (e.getKeyCode() == 0x209) // + key to ]
{
e.setKeyCode(KeyEvent.VK_CLOSE_BRACKET);
return e;
}
if (e.getKeyCode() == KeyEvent.VK_Z) // change Z to Y
{
e.setKeyCode(KeyEvent.VK_Y);
return e;
}
if (e.getKeyCode() == KeyEvent.VK_Y) // and Y to Z
{
e.setKeyCode(KeyEvent.VK_Z);
return e;
}
}
// german mapping end
// spanish keyboard mapping
if (localkeys.equals("ES_ES")) {
if (DEBUG) {
System.out.println("ES: " + e.getKeyChar());
}
if (e.getKeyChar() == '\u00BA' || e.getKeyChar() == '\u00B2') {
e.setKeyCode(KeyEvent.VK_TAB);
return e;
}
if (e.getKeyChar() == '\u00E7' || e.getKeyChar() == '\u00C7') {
e.setKeyCode(KeyEvent.VK_BACK_SLASH);
return e;
}
if (e.getKeyChar() == '\u00D1' || e.getKeyChar() == '\u00F1') {
e.setKeyCode(KeyEvent.VK_SEMICOLON);
return e;
}
if (e.getKeyCode() == 0xde) {
e.setKeyCode(KeyEvent.VK_MINUS);
return e;
}
if (e.getKeyCode() == 0x2d) // - key to /
{
e.setKeyCode(KeyEvent.VK_SLASH);
return e;
}
if (e.getKeyCode() == 0x81) {
e.setKeyCode(KeyEvent.VK_QUOTE);
return e;
}
if (e.getKeyCode() == 0x209) // + key to ]
{
e.setKeyCode(KeyEvent.VK_CLOSE_BRACKET);
return e;
}
if (e.getKeyCode() == 0x206) {
e.setKeyCode(KeyEvent.VK_EQUALS);
return e;
}
if (e.getKeyCode() == 0x99) {
e.setKeyCode(KeyEvent.VK_ALT_GRAPH);
return e;
}
if (e.getKeyCode() == 0x80) {
e.setKeyCode(KeyEvent.VK_OPEN_BRACKET);
return e;
}
}
// spanish mapping end
// french keyboard mapping
if (localkeys.equals("FR_FR")) {
if (DEBUG) {
System.out.println("FR: " + e.getKeyChar());
}
// ,;:=
if (e.getKeyCode() == 515) {
e.setKeyCode(KeyEvent.VK_CLOSE_BRACKET);
return e;
} else if (e.getKeyCode() == 130) {
e.setKeyCode(KeyEvent.VK_OPEN_BRACKET);
return e;
} else if (e.getKeyCode() == 57) {
e.setKeyCode(KeyEvent.VK_9);
return e;
} else if (e.getKeyCode() == 522) {
e.setKeyCode(KeyEvent.VK_MINUS);
return e;
} else if (e.getKeyCode() == KeyEvent.VK_Q) {
e.setKeyCode(KeyEvent.VK_A);
return e;
} else if (e.getKeyCode() == KeyEvent.VK_A) {
e.setKeyCode(KeyEvent.VK_Q);
return e;
} else if (e.getKeyCode() == KeyEvent.VK_Z) {
e.setKeyCode(KeyEvent.VK_W);
return e;
} else if (e.getKeyCode() == KeyEvent.VK_W) {
e.setKeyCode(KeyEvent.VK_Z);
return e;
} else if (e.getKeyChar() == '\u00B2' || (e.getKeyCode() == 0 && (int) e.getKeyChar() == 65535)) {
e.setKeyCode(KeyEvent.VK_BACK_SLASH);
return e;
} else if (e.getKeyChar() == '\u0025' || e.getKeyChar() == '\u00F9') {
e.setKeyCode(KeyEvent.VK_QUOTE);
return e;
} else if (e.getKeyCode() == 151) {
e.setKeyCode(KeyEvent.VK_ALT_GRAPH);
return e;
} else if (e.getKeyCode() == 77) {
e.setKeyCode(59);
return e;
} else if (e.getKeyCode() == 44) {
e.setKeyCode(77);
return e;
} else if (e.getKeyCode() == 59) {
e.setKeyCode(44);
return e;
} else if (e.getKeyCode() == 517) {
e.setKeyCode(KeyEvent.VK_SLASH);
return e;
} else if (e.getKeyCode() == 513) {
e.setKeyCode(KeyEvent.VK_PERIOD);
return e;
}
}
// french mapping end
return e;
}
}
public void KeyPressed(KeyEvent e){
translator.translate(e, localkeys);
computer.handleKeyEvent(e);
}
Quote from: phi2x on 20:53, 07 December 12
[attachimg=1]
Quote from: SyX on 23:23, 07 December 12I think that you will be interested in the new ZEXALL test (faster and with tests for the recently discovered CCF/SCF flags) that Patrik Rak is working, you can see more info in this thread (http://www.worldofspectrum.org/forums/showthread.php?t=41704).Jeez... The Z80 is a great little device, but things like that just seem unnecessarily complex and obscure. ;) But I'm definitely glad there are people who care that much about accuracy.
Quote from: Patrik RakWell, if we are lucky, it will behave in such a way that single bit is enough to represent this state. OTOH, when you consider how F register works, it would make sense if there was some place to assemble new F, and then just store it to F. The way how F is paired with A for PUSH/POP AF and EX AF,AF' furthermore makes F seem like an ordinary register, so having another place for flag assembly makes sense.I really wish F was an ordinary register. Can you tell I'm kinda running out of spares at the moment? :D
Quote from: db6128 on 02:51, 08 December 12Jeez... The Z80 is a great little device, but things like that just seem unnecessarily complex and obscure. ;) But I'm definitely glad there are people who care that much about accuracy.A long time ago, i would think the same... but while coding pac-man, i had a bug where the right eye of the ghost was an 0 (Ghost in the Shell eyes :P ), instead the correct tile. And this bug only was visible in Caprice, CPCBox and the real machine. The problem was related to bad flags emulation, it's because that i think it's a great idea the emulators pass these tests :)
Quote from: db6128 on 02:51, 08 December 12I really wish F was an ordinary register. Can you tell I'm kinda running out of spares at the moment? :DSure :D , that is the only reason for coding a little in the 6502, then you will feel free again :P
Quote from: SyX on 11:37, 08 December 12A long time ago, i would think the same... but while coding pac-man, i had a bug where the right eye of the ghost was an 0 (Ghost in the Shell eyes :P ), instead the correct tile. And this bug only was visible in Caprice, CPCBox and the real machine. The problem was related to bad flags emulation, it's because that i think it's a great idea the emulators pass these tests :)Oh, definitely, I'm very glad that people care enough to find these things out and then emulate them! What I meant was that it's just a bit of a shame that this otherwise very cool little chip has some major peculiarities like this, especially for the dedicated programmers of emulators, etc. :)
QuoteSure :D , that is the only reason for coding a little in the 6502, then you will feel free again :PHaha, maybe some other time, when I'm not running out of the Z80's many more registers! I can only imagine how much more free programmers felt who had been using the 8080 when the Z80 came out and added the alternate set of registers. Especially if you're not using interrupts, they can be a massive advantage. I do wish IX/IY were more useful, though; I've been coding something with data arranged in a struct-like format, and I have to do all sorts of acrobatics using INC/DEC (H)L, so I was disappointed when I calculated that doing it via IX/IY would be quite a bit slower and thus probably not worth the extra readability. The only real use I've found of IX/IY so far is to use the undocumented 8-bit IXH, etc. as counters in outer loops, seeing as operations on them are only 1 NOP slower than the equivalents on H/L
QuoteAnd after use the alternative registers, we always have the stack, sm-code, I, the high bit of R, the second I/O port in the PSG, ... :PAh, SP. I love SP. Who needs a real stack, anyway? :D
Quote from: phi2x on 23:07, 10 December 12I've noted that OCP Art Studio use the Kempston mouse positions as if it was for a 640*400 CPC screen. But with my PC settings and my simple optical mouse, it's totally unusable if the mouse is not slowed down further than what OCP does.
So in my implementation, I first tried to divide the sensitivity by 2 on each axis. That means that CPCBox is working internally as if the CPC screen was of 1280*800 resolution. It still felt a bit too fast for OCP, but it had very much a PC mouse feeling to it.
I then divided it by 4 on each axis, so it's exactly as if the CPC had a 2560*1600 resolution! Then it felt a bit slow, perhaps even painful, to move the mouse over the screen.
Quote from: Gryzor on 15:29, 22 February 13
Good enough for the Ides of March. Not like we're expecting a new and improved version every single day mate :)
Quote from: Markus Mobius on 05:19, 16 October 13
Is it possible to have cpcbox as a packaged chrome app? That would allow me to use it offline as well as online. It could also be in the chrome store.
It's a fantastic website by the way.
Quote from: phi2x on 22:14, 16 October 13
But I see a problem with the Chrome web store: it only works with the Chrome browser!
And that's not good I think. I prefer to see CPCBox running equally on any browser that respect web standards
Quote from: TFM on 23:10, 16 October 13
Does it run on IE now? If not, Chrome is all you need ;)
Quote from: phi2x on 23:23, 16 October 13
Here's something completely unrelated, but really the news is of importance (when you remember what happened in the past in this thread)!
According to this post, MAME will switch from their current not-for-profit license to the BSD license:
David Haywood's Homepage » The End? Newer Update (http://mamedev.emulab.it/haze/2013/10/15/the-end/)
Basically, it means that everyone is now authorized to make commercial exploitation of the MAME sourcecode.
And that decision has been taken without consulting the people who contributed in the project.
So, at the moment, I'm having a thought for all the volunteers that believed in the lies of the MAME team, contributing to the MAME project naively believing that they were protected by the MAME license that there wouldn't ever be any leechers legally making money out of their work.
The moral of the story is that if you decide to publish your code with an open-source license, you'll loose every concrete control on the code you worked hard for.
And there's just enough malevolant people in this world that it won't be long before those people will rip your work and exploit it for their sole profit.
The proof has been made by the MAME team :(
Quote from: phi2x on 09:32, 24 October 13
In the next CPCBox release I'm working on, I've overhauled the keyboard handling to fix the issue.
Quote from: redbox on 13:57, 24 October 13
The current version works on my iPhone (with Safari) at about 25fps which is impressive.
However, there is no sound and I can't control the keyboard. Any plans to update these factors for Safari?
Would be great if you could - who needs an App (and all of Apples meglo-mania control mechanisms) when it works in a browser ;)
Quote from: phi2x on 09:32, 24 October 13I just tried using CPCBox to test some tape functionality (that's another matter) and found I couldn't even try CPCBox with my own tape at all... Why?
Yes, I'm aware it's a big downside at the moment.
In the next CPCBox release I'm working on, I've overhauled the keyboard handling to fix the issue.
Quote from: phi2x on 21:39, 21 August 14This time it's official! Mozilla completely removed the Audio Data API from Firefox :'(
Quote from: phi2x on 21:12, 28 January 15
That's because CPCBox uses the obsoleted Audio Data API for sound output.
Audio actually still works in CPCBox if you use an older Firefox release (up to FireFox 27).
I'm still working on the next generation of CPCBox at the moment, so all hope is not lost ;)
Quote from: phi2x on 20:49, 14 March 16
CPCBox is not open-source.
Quote from: phi2x on 11:46, 17 March 16
Technically speaking yes, the javascript code that is fed to the browser is visible to everyone via the F12 devtools of any browser.
And that explains why there's so much javascript obfuscation tools that currently exist ;) .
Their goal is to protect source code from being stolen, or being tampered with.
It's sad but counting on a simple copyright banner to protect your work will just make crooks laugh at it while they're ripping it.
Quote from: PhilZeVibe on 00:31, 05 July 19Hmm. I personally think the domain name is not appropriate, because of this another Amstrad CPC emulator: http://www.retrovirtualmachine.org/en/
The emulator will now be found in www.retrovm.com (http://www.retrovm.com)
Quote from: PhilZeVibe on 00:31, 05 July 19You have renew it. Do you think the opposite too? ::)
Also the cpcbox.com domain name will expire in a few days from now and I won't renew it.
Quote from: PhilZeVibe on 00:31, 05 July 19
The reason is that my goal in the future is that my emulator will also be able to emulate some other computers than just the CPC.
So it won't make sense to still keep the CPCbox name.
Quote from: PhilZeVibe on 23:15, 04 November 19
Nope. I don't plan to release the source code.
Quote from: Gryzor on 18:10, 17 February 22I'm not surprised...
What a shitty thing to do, deleting the posts... 🙄
Quote from: TotO
I'm not surprised...
Quote from: BZHGames on 21:05, 17 February 22
Thanks, but Tiny8Bit is already available on my site. It has the advantage of having sound unlike CPCBox, but I find it less good. All games do not work and it is not possible to make screenshots in html5.
Are there others?
Quote from: Gryzor on 19:44, 17 February 22If you don't remember, he was Phi2x previously.
I think it's a total asshole move to be honest.
Quote from: reidrac on 21:24, 17 February 22Now that we are talking, have you considered at least adding a link to the author's website -if it exists- when you add a game?For some games there is already a link. But it's true that for indie games, I will have to do it systematically.
It would be nic
Quote from: tjohnson on 19:38, 17 February 22Don't panic:
I don't get why people delete their posts like this, it's one thing to just leave, another to try and remove old posts and evidence, shame as its a bit of history gone that might prove helpful to someone else in the future.