News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Devilmarkus

JavaCPC Desktop available as BETA!

Started by Devilmarkus, 22:46, 25 December 09

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

redbox

Quote from: Devilmarkus on 14:00, 31 October 10
Z80 assembler understands (should) IF/ENDIF conditions.

Are you sure this isn't a macro of some sort, such as in WinAPE?

In Z80, the simplest IF is to use CP.  This subtracts a value from A register (without actually subtracting it for A's preservation) and then sets the Z flag accordingly.  So if A is 15, a CP 15 will set the Z(ero) flag true and you can have some simple IF/ELSE code.

For example:


ld a,value          ; load A with value
cp 15               ; is it 15
jr z,if_code        ; jump here if it is
jr nz,else_code     ; go here if it isn't

Devilmarkus

Quote from: redbox on 19:32, 31 October 10
Are you sure this isn't a macro of some sort, such as in WinAPE?

Yes it's a macro.
But also the good old MAXAM assembler knows it!
(And sadly many coders use it  :o )

Example: Pacman source by Richard Wilson:
Above line 3020:
.end1 equ $ and #ff
if end1
ds 256 - end1
endif
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

#202
Ok I think, I got it working in my homebrew Z80 assembler:

test code:
;; IF-test
ORG &4000

nobody equ 0
leo equ 1
ant equ 2
bob equ 3

; standard:

if nobody
db "nobody is"
endif

if leo
db "leo is"
endif

if leo=ant
db "leo is = ant"
endif

;extended:

if leo < ant
db "leo is smaller"
endif

if ant > bob
db "ant is larger"
endif


Assembler output:
000002 4000  ORG &4000           
000004 4000  NOBODY EQU 0         
000005 4000  LEO EQU 1           
000006 4000  ANT EQU 2           
000007 4000  BOB EQU 3           
000011 4000  IF NOBODY           
000012 4000  DB "nobody is"       
000013 4000  ENDIF               
000015 4000  IF LEO               
000016 4000  DB "leo is"          6C 65 6F 20 69 73
000017 4006  ENDIF               
000019 4006  IF LEO=ANT           
000020 4006  DB "leo is = ant"   
000021 4006  ENDIF               
000025 4006  IF LEO < ANT         
000026 4006  DB "leo is smaller"  6C 65 6F 20 69 73 20 73 6D 61 6C 6C 65 72
000027 4014  ENDIF               
000029 4014  IF ANT > BOB         
000030 4014  DB "ant is larger"   
000031 4014  ENDIF               
_______________________________________________________
Assembled in 0.047s from &4000 to &4014 length is &0014


HEX:

00004000: 6C 65 6F 20 69 73 6C 65 6F 20 69 73 20 73 6D 61 ; leo isleo is sma
00004010: 6C 6C 65 72                                     ; ller


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

redbox

Quote from: Devilmarkus on 20:16, 31 October 10
.end1 equ $ and #ff
if end1
ds 256 - end1
endif


This looks like self-modifying code...

Devilmarkus

Small example for the next version of my Z80 Assembler:
http://cpc-live.com/assembler
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

Executioner

Hi Markus,

if, else, elseif and endif are not macros. They are simply conditional compilation instructions for the assembler. They don't generate any code themselves, simply tell the assembler which code to generate. The conditions are considered true if they evaluate to non-zero. (Not sure if = works at all).

Conditional breakpoints can be useful. For example, you can set a breakpoint in a loop with a condition of HL = #3fe2

WinAPE uses full evaluation there (with brackets). There are also some additional functions to poke a value into memory or set a palette colour. You could for example have one breakpoint which set the border to green at the start of a section of code, then returned 0. And another breakpoint which set the border back to black.

Devilmarkus

Cool thing with the conditions...
Perhaps I will add some simple, too.

Actually I am improving the disassembler (Which is REALLY hard for me because I'm an absolute noob with that!)

The goal is to make disassembling as simple as possible to get a suitable result!

Example video:
http://cpc-live.com/disassembler/

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

redbox

Quote from: Devilmarkus on 21:43, 05 November 10
The goal is to make disassembling as simple as possible to get a suitable result!

This project is just getting better and better  :)

I like the way you're recoginising firmware calls and labelling them.

Another nice feature of disassembly would be that if you change a tag (i.e. label_83b0 or similar) that there is an option to change them ALL for you - I know editors like Notepad++ can do this but it would be great to do this within the disassembler and make decoding routines much faster.

Devilmarkus

Quote from: redbox on 15:23, 06 November 10
Another nice feature of disassembly would be that if you change a tag (i.e. label_83b0 or similar) that there is an option to change them ALL for you - I know editors like Notepad++ can do this but it would be great to do this within the disassembler and make decoding routines much faster.

Good idea!
I will add this... ;)
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

#209
I added a "replace" feature:
You can enter a search string (case sensitive) and all strings in the code field are replaced!
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

redbox

Great stuff, will give it a whirl  :)

Could it be possible to have an option that you turn on which recognises you are editing a label tag and then changes them all on the fly (i.e. so you only edit one and whilst doing this all the others change automatically)...? Or would this just be too complex?

Devilmarkus

Well, that would be much too complex here.
Think:
In the video I used a small sourcecode.
But a code often has more than 2000 lines.

Generating labels for a sourcecode with ca. 10.000 lines takes about 5 minutes!!!
Generating relative labels (rel_label_XXXX+1) takes ~ 20 minutes!

(I am too dumb to code an efficientier routine for that :( )

  Replacing firmware addresses takes a few seconds :)
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

redbox

I remember battling with this at college to make my routines faster.

Not much fun  >:(

Devilmarkus

Perhaps you see something how to speed this crap up?
for (int c = 0; c < code.length; c++) {
    if (code[c].length() < 3) {
        continue;
    } else {
        String codebstr = code[c];
        String codestr = code[c].toLowerCase();
        if (stop) {
            Interface.compileprogress.setValue(0);
            Interface.compileprogress.setStringPainted(false);
            codeField.setEnabled(true);
            codeField.setBackground(Color.white);
            stop = false;
            jemu.ui.JEMU.debugger.getDebuggerComputer().start();
            return;
        }
        b++;
        if (b > 100) {
            b = 0;
            Interface.compileprogress.setValue(c);
            Interface.compileprogress.setString("Line: " + (c + 1)
                    + " To do: " + (code.length - c) + " last label: "
                    + lastlabel);
        }
        if (!codestr.contains("org")) {
            for (int i = start; i < end; i++) {
                String checkLabel = Util.hex((short) i);
                if (!depth && codebstr.contains(";" + checkLabel)) {
                    if (ass.contains("&" + checkLabel)) {
                        lastlabel = "set:" + label + checkLabel;
                        Interface.compileprogress.setString("Line: " + (c + 1)
                                + " To do: " + (code.length - c) + " last label: "
                                + lastlabel);
                        code[c] = codebstr = codebstr.replace(codebstr, label + checkLabel + "\n" + codebstr);
                    }
                } else if (depth) {
                    int f = i + 1;
                    String checkRelLabel = Util.hex((short) f);
                    if (codebstr.contains(";" + checkRelLabel) && !codebstr.startsWith(label2 + checkRelLabel)) {
                        if (ass.contains("&" + checkLabel)) {
                            lastlabel = "set+1:" + label2 + checkLabel;
                            Interface.compileprogress.setString("Line: "
                                    + (c + 1) + " To do: " + (code.length - c)
                                    + " last label: " + lastlabel);
                            code[c] = codebstr = codebstr.replace(codebstr, label2 + checkRelLabel + "\n" + codebstr);
                        }
                    } else {
                        f = i - 1;
                        checkRelLabel = Util.hex((short) f);
                        if (codebstr.contains(";" + checkRelLabel) && !codebstr.startsWith(label2 + checkRelLabel)) {
                            if (ass.contains("&" + checkLabel)) {
                                lastlabel = "set-1:" + label2 + checkLabel;
                                Interface.compileprogress.setString("Line: "
                                        + (c + 1) + " To do: " + (code.length - c)
                                        + " last label: " + lastlabel);
                                code[c] = codebstr = codebstr.replace(codebstr, label2 + checkRelLabel + "\n" + codebstr);
                            }
                        }
                    }
                }
                for (int h = 0; h < canLabel.length; h++) {
                    if (codebstr.contains(canLabel[h])) {
                        if (!depth && !codebstr.contains(";" + checkLabel) && codebstr.contains("&" + checkLabel)) {
                            if (ass.contains(";" + checkLabel)) {
                                code[c] = codebstr = codebstr.replace("&" + checkLabel, label + checkLabel);
                                code[c] = codebstr = codebstr.replace("     ;", ";");
                            }
                        } else if (depth) {
                            int f = i + 1;
                            String checkass2 = Util.hex((short) f);
                            if (!codebstr.contains(";" + checkLabel) && codebstr.contains("&" + checkass2)) {
                                if (ass.contains(";" + checkLabel)) {
                                    code[c] = codebstr = codebstr.replace("&" + checkass2, label2 + checkLabel + "+1");
                                    code[c] = codebstr = codebstr.replace("           ;", ";");
                                }
                            } else {
                                f = i - 1;
                                checkass2 = Util.hex((short) f);
                                if (!codebstr.contains(";" + checkLabel) && codebstr.contains("&" + checkass2)) {
                                    if (ass.contains(";" + checkLabel)) {
                                        code[c] = codebstr = codebstr.replace("&" + checkass2, label2 + checkLabel + "-1");
                                        code[c] = codebstr = codebstr.replace("           ;", ";");
                                    }
                                }
                            }
                        }
                        break;
                    }
                }
            }
        }
    }
}


Could help me much!
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

#214
Working on linear pixel showing for my gfx viewer.
Many games like Antiriad or Aliens use this.
Mode 0 sprites but 4 colours only...
 
 




(Mode 1 but stretched!)

Also editing works already in MODE 1 or 2.
(MODE 0 works theoretically, too, but result is crap often...)
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

redbox

Quote from: Devilmarkus on 14:49, 07 November 10
Perhaps you see something how to speed this crap up?

I haven't programmed high-level languages in a loooong time.  Well, I write pseudo-code for my Z80 sometimes so I guess this is a bit like Java  8)

I can't see why it would be so slow, or does Java have a problem with recursion?

Devilmarkus

Quote from: redbox on 15:56, 07 November 10
I can't see why it would be so slow, or does Java have a problem with recursion?

Well I don't think, there's a problem with. But recursion slows down all!
Do you see a way to remove the recursion here?
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

redbox

Quote from: Devilmarkus on 17:08, 07 November 10
Do you see a way to remove the recursion here?

Not off the top of my head, but following the code I can't see why it would be so slow.

Maybe it's just Java...

EgoTrip

Im liking this emulator, now I have a PC that is capable of running Java.


Can I make some suggestions for the image editor. First, a grid would be nice. Second, the co-cordinates of the mouse/brush displayed somewhere would be very useful. Also, improving the zoom feature perhaps, stays in the same window (way too many windows get opened in a JavaCPC session) using scroll bars to navigate when zoomed in.

Devilmarkus

Quote from: EgoTrip on 16:08, 08 November 10
Im liking this emulator, now I have a PC that is capable of running Java.


Can I make some suggestions for the image editor. First, a grid would be nice. Second, the co-cordinates of the mouse/brush displayed somewhere would be very useful. Also, improving the zoom feature perhaps, stays in the same window (way too many windows get opened in a JavaCPC session) using scroll bars to navigate when zoomed in.

Hi,
thanks for your suggestions.
The problem is: I don't have a real scroll area! I am doing pseudo scrolling in the paint field.
To make these things as you suggested, work, I would have to rewrite a complete engine for that, and, this would totally consume my last crumbeled brain cells :(
(Really, it would be lot of work to change the Paint app. like this.... :( )
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

norecess

I also have my own set of tools.


At a time, I thought about making my own image editor.. then finally, just decided to allow import of bitmaps, edited under any external third-party image editor (that will ever be better than a custom solution).

Devilmarkus

#221
Quote from: norecess on 19:36, 08 November 10
I also have my own set of tools.

That's good.
I think everyone uses his own set of tools to create something for the CPC.
I just combined a few (some are simple, some are very complex) tools to JavaCPC Desktop.
This makes 'some' things easier and is maybe helpful for everyone...
And I just like coding funny things... ;)

Here's the today's beta:
http://cpc-live.com/data/download.php?type=-beta&fichier=2010_11_08_JavaCPC_Desktop_BETA.zip

You can access the GFX viewer via debugger or via menu: Help -> GFXViewer

Have fun!
(Test it on your own risk! It's pure beta! Nothing cleaned up yet...)

Edit:
Here's a ASM export example for the GFX-Viewer:
        ORG     &9920

        DB      &AA,&A8,&04,&40,&51,&55,&50
        DB      &AA,&80,&01,&04,&89,&95,&50
        DB      &AA,&80,&01,&00,&10,&95,&50
        DB      &AA,&01,&00,&0A,&28,&A5,&50
        DB      &AA,&00,&00,&04,&08,&65,&50
        DB      &AA,&04,&10,&14,&41,&89,&50
        DB      &A8,&05,&00,&10,&40,&29,&50
        DB      &A8,&14,&00,&10,&40,&89,&50
        DB      &A8,&14,&00,&10,&00,&59,&50
        DB      &A8,&05,&00,&00,&00,&42,&50
        DB      &A0,&04,&00,&00,&01,&06,&50
        DB      &A0,&01,&00,&00,&A4,&06,&50
        DB      &A0,&00,&00,&00,&00,&09,&50
        DB      &A0,&00,&11,&00,&40,&09,&50
        DB      &A1,&00,&51,&51,&40,&A2,&50
        DB      &81,&00,&51,&51,&54,&02,&50
        DB      &84,&00,&51,&51,&A4,&0A,&90
        DB      &80,&01,&45,&51,&A8,&05,&90
        DB      &84,&01,&55,&54,&A8,&01,&90
        DB      &81,&01,&55,&56,&A9,&01,&90
        DB      &80,&05,&55,&56,&AA,&26,&10
        DB      &80,&05,&55,&56,&AA,&11,&90
        DB      &80,&05,&55,&55,&AA,&01,&90
        DB      &80,&05,&05,&55,&0A,&01,&90
        DB      &80,&00,&41,&54,&52,&02,&10
        DB      &80,&01,&50,&51,&56,&04,&10
        DB      &80,&05,&04,&55,&05,&05,&90
        DB      &80,&04,&00,&64,&11,&01,&90
        DB      &80,&04,&10,&68,&11,&00,&90
        DB      &84,&05,&00,&68,&15,&04,&90
        DB      &A0,&15,&54,&6A,&A9,&45,&90
        DB      &A0,&15,&54,&6A,&A9,&4A,&10
        DB      &A0,&15,&54,&6A,&A9,&40,&50
        DB      &A0,&15,&54,&6A,&A9,&40,&50
        DB      &A8,&15,&55,&AA,&A9,&42,&50
        DB      &A8,&15,&51,&A6,&A5,&41,&50
        DB      &A8,&15,&51,&A6,&A5,&45,&50
        DB      &A8,&15,&50,&1A,&A5,&49,&50
        DB      &A8,&15,&55,&1A,&A9,&49,&50
        DB      &AA,&15,&55,&9A,&A9,&51,&50
        DB      &AA,&15,&55,&AA,&A9,&41,&50
        DB      &AA,&15,&55,&6A,&A9,&41,&50
        DB      &AA,&45,&50,&06,&A5,&49,&50
        DB      &AA,&05,&55,&6A,&A5,&09,&50
        DB      &AA,&45,&55,&56,&A5,&05,&50
        DB      &AA,&01,&54,&06,&95,&25,&50
        DB      &AA,&81,&55,&2A,&95,&05,&50
        DB      &AA,&84,&56,&AA,&94,&15,&50
        DB      &AA,&84,&56,&AA,&94,&55,&50
        DB      &AA,&A4,&16,&AA,&50,&55,&50
        DB      &AA,&A4,&15,&AA,&50,&55,&50
        DB      &AA,&A4,&05,&55,&40,&55,&50
        DB      &AA,&A0,&55,&55,&59,&55,&50
        DB      &AA,&81,&54,&55,&56,&55,&50
        DB      &AA,&81,&55,&00,&56,&55,&50
        DB      &AA,&01,&55,&00,&59,&95,&50
        DB      &AA,&00,&55,&40,&59,&95,&50
        DB      &A8,&05,&41,&54,&1A,&A5,&50
        DB      &A8,&05,&04,&54,&15,&A5,&50
        DB      &A8,&05,&14,&04,&15,&A9,&50
        DB      &A8,&41,&15,&55,&55,&69,&50
        DB      &A0,&51,&AA,&AA,&AA,&59,&50
        DB      &A0,&5A,&AA,&AA,&AA,&99,&50
        DB      &A0,&5A,&55,&55,&5A,&9A,&50
        DB      &A0,&65,&00,&00,&01,&6A,&50
        DB      &A0,&20,&55,&55,&A8,&26,&50
        DB      &A0,&05,&00,&00,&02,&8A,&50
        DB      &A0,&10,&00,&00,&00,&26,&50
        DB      &80,&10,&14,&51,&A0,&0A,&50
        DB      &80,&41,&55,&11,&A8,&0A,&90
        DB      &80,&01,&55,&54,&A9,&0A,&90
        DB      &81,&05,&55,&55,&A9,&0A,&90
        DB      &81,&05,&55,&55,&6A,&42,&90
        DB      &81,&05,&55,&55,&6A,&12,&90
        DB      &80,&05,&55,&55,&6A,&02,&90
        DB      &80,&15,&01,&54,&06,&02,&90
        DB      &80,&14,&00,&50,&02,&00,&90
        DB      &A0,&15,&50,&51,&56,&10,&90
        DB      &A0,&15,&04,&55,&05,&10,&90
        DB      &A0,&14,&40,&64,&41,&10,&90
        DB      &A0,&15,&04,&69,&45,&00,&90
        DB      &A0,&15,&54,&69,&56,&00,&90
        DB      &A1,&15,&54,&6A,&5A,&41,&50
        DB      &A1,&15,&54,&AA,&9A,&41,&50
        DB      &A1,&05,&55,&AA,&A9,&41,&50
        DB      &A1,&05,&55,&AA,&A9,&41,&50
        DB      &A1,&05,&55,&AA,&A9,&45,&50
        DB      &A1,&05,&51,&A6,&A9,&45,&50
        DB      &A1,&05,&51,&A6,&A9,&45,&50
        DB      &A1,&85,&54,&16,&A5,&45,&50
        DB      &A1,&85,&55,&5A,&A5,&45,&50
        DB      &A1,&85,&55,&9A,&A5,&45,&50
        DB      &A1,&85,&55,&9A,&A5,&45,&50
        DB      &A1,&85,&55,&6A,&A5,&15,&50
        DB      &A1,&85,&50,&06,&A5,&15,&50
        DB      &A8,&61,&55,&69,&A5,&15,&50
        DB      &A8,&61,&55,&56,&95,&15,&50
        DB      &A8,&51,&54,&06,&95,&15,&50
        DB      &AA,&10,&69,&6A,&94,&15,&50
        DB      &AA,&85,&59,&AA,&94,&55,&50
        DB      &AA,&A0,&01,&AA,&94,&55,&50
        DB      &AA,&A4,&15,&6A,&50,&55,&50
        DB      &AA,&A4,&15,&69,&50,&55,&50
        DB      &AA,&A4,&05,&55,&40,&55,&50
        DB      &AA,&A8,&04,&4A,&69,&55,&50
        DB      &AA,&A0,&00,&00,&1A,&55,&50
        DB      &AA,&80,&00,&01,&4A,&55,&50
        DB      &AA,&80,&00,&10,&09,&95,&50
        DB      &AA,&00,&00,&45,&05,&A5,&50
        DB      &AA,&00,&05,&61,&84,&65,&50
        DB      &AA,&00,&05,&41,&04,&65,&50
        DB      &AA,&00,&04,&44,&04,&65,&50
        DB      &AA,&01,&00,&44,&44,&69,&50
        DB      &AA,&00,&00,&04,&A8,&99,&50
        DB      &A8,&00,&00,&00,&A8,&99,&50
        DB      &A8,&40,&00,&0A,&80,&99,&50
        DB      &A8,&01,&00,&00,&14,&A9,&50
        DB      &A8,&01,&54,&01,&55,&29,&50
        DB      &A8,&01,&55,&55,&55,&09,&50
        DB      &A8,&45,&55,&55,&55,&09,&50
        DB      &A8,&45,&55,&55,&55,&19,&50
        DB      &A8,&45,&55,&55,&95,&19,&50
        DB      &A8,&05,&55,&55,&A9,&19,&50
        DB      &A8,&05,&55,&56,&A9,&09,&50
        DB      &A8,&05,&55,&56,&AA,&09,&50
        DB      &A8,&05,&55,&56,&AA,&09,&50
        DB      &A8,&05,&55,&55,&AA,&09,&50
        DB      &A8,&05,&01,&54,&06,&09,&50
        DB      &A8,&44,&00,&50,&02,&19,&50
        DB      &A8,&55,&50,&51,&56,&19,&50
        DB      &A8,&55,&04,&55,&05,&19,&50
        DB      &A8,&54,&10,&64,&11,&19,&50
        DB      &AA,&55,&04,&69,&15,&15,&50
        DB      &AA,&55,&54,&69,&56,&15,&50
        DB      &AA,&55,&54,&6A,&5A,&55,&50
        DB      &AA,&55,&54,&6A,&9A,&55,&50
        DB      &AA,&55,&55,&6A,&AA,&55,&50
        DB      &AA,&55,&55,&AA,&AA,&45,&50
        DB      &AA,&55,&55,&AA,&A9,&45,&50
        DB      &AA,&05,&51,&AA,&A9,&45,&50
        DB      &AA,&05,&51,&A6,&A9,&45,&50
        DB      &AA,&85,&54,&16,&A9,&45,&50
        DB      &AA,&85,&55,&59,&A9,&45,&50
        DB      &AA,&85,&55,&99,&A5,&45,&50
        DB      &AA,&85,&55,&9A,&A5,&45,&50
        DB      &AA,&85,&55,&6A,&A5,&15,&50
        DB      &AA,&95,&50,&06,&A5,&15,&50
        DB      &AA,&91,&45,&69,&A5,&15,&50
        DB      &AA,&A1,&55,&56,&A5,&15,&50
        DB      &AA,&A1,&54,&06,&A5,&15,&50
        DB      &AA,&A0,&55,&6A,&94,&15,&50
        DB      &AA,&A0,&55,&AA,&94,&55,&50
        DB      &AA,&A4,&55,&AA,&94,&55,&50
        DB      &AA,&A4,&15,&6A,&50,&55,&50
        DB      &AA,&A4,&15,&69,&50,&55,&50
        DB      &AA,&A4,&05,&55,&40,&55,&50
        DB      &AA,&AA,&04,&4A,&59,&55,&50
        DB      &AA,&A8,&00,&00,&0A,&55,&50
        DB      &AA,&A0,&00,&01,&96,&55,&50
        DB      &AA,&A0,&04,&20,&45,&15,&50
        DB      &AA,&80,&00,&95,&60,&95,&50
        DB      &AA,&84,&01,&09,&60,&95,&50
        DB      &AA,&00,&00,&00,&62,&A5,&50
        DB      &AA,&00,&00,&00,&20,&25,&50
        DB      &AA,&00,&00,&10,&22,&25,&50
        DB      &A8,&00,&00,&00,&54,&25,&50
        DB      &A8,&01,&50,&01,&A4,&25,&50
        DB      &A8,&01,&55,&56,&A8,&29,&50
        DB      &A8,&01,&55,&5A,&A8,&29,&50
        DB      &A8,&05,&55,&6A,&AA,&09,&50
        DB      &A8,&05,&55,&56,&AA,&29,&50
        DB      &A8,&05,&55,&55,&AA,&09,&50
        DB      &A8,&05,&55,&55,&AA,&09,&50
        DB      &A8,&05,&55,&55,&AA,&09,&50
        DB      &A8,&05,&55,&55,&AA,&09,&50
        DB      &A8,&05,&55,&56,&AA,&29,&50
        DB      &A8,&05,&55,&56,&AA,&09,&50
        DB      &A8,&05,&55,&56,&AA,&09,&50
        DB      &AA,&05,&55,&5A,&AA,&09,&50
        DB      &AA,&04,&01,&58,&02,&05,&50
        DB      &A8,&05,&50,&50,&56,&05,&50
        DB      &A8,&45,&54,&51,&55,&11,&50
        DB      &A8,&55,&04,&51,&05,&11,&50
        DB      &A8,&54,&00,&64,&11,&11,&50
        DB      &A8,&54,&10,&69,&12,&11,&50
        DB      &A8,&55,&14,&69,&2A,&11,&50
        DB      &A9,&55,&54,&6A,&5A,&51,&50
        DB      &A9,&45,&54,&6A,&9A,&51,&50
        DB      &A9,&45,&55,&6A,&AA,&51,&50
        DB      &AA,&45,&55,&AA,&AA,&65,&50
        DB      &AA,&45,&55,&AA,&A9,&25,&50
        DB      &AA,&45,&55,&AA,&A9,&25,&50
        DB      &AA,&05,&51,&A6,&A9,&05,&50
        DB      &AA,&85,&50,&16,&A9,&15,&50
        DB      &AA,&85,&55,&5A,&A9,&15,&50
        DB      &AA,&85,&55,&69,&A5,&15,&50
        DB      &AA,&95,&55,&69,&A5,&15,&50
        DB      &AA,&91,&55,&69,&A5,&15,&50
        DB      &AA,&A1,&55,&56,&A5,&15,&50
        DB      &AA,&A1,&41,&69,&A5,&15,&50
        DB      &AA,&A1,&55,&56,&64,&55,&50
        DB      &AA,&A1,&54,&06,&64,&55,&50
        DB      &AA,&A4,&55,&6A,&64,&55,&50
        DB      &AA,&A4,&55,&AA,&64,&55,&50
        DB      &AA,&A8,&55,&AA,&54,&55,&50
        DB      &AA,&A8,&55,&6A,&50,&55,&50
        DB      &AA,&A8,&15,&69,&50,&55,&50
        DB      &AA,&A8,&05,&55,&40,&55,&50
        DB      &AA,&A8,&04,&40,&52,&55,&50
        DB      &AA,&80,&01,&04,&89,&95,&50
        DB      &AA,&80,&01,&00,&10,&95,&50
        DB      &AA,&01,&00,&0A,&28,&A5,&50
        DB      &AA,&00,&00,&00,&08,&65,&50
        DB      &AA,&00,&0A,&AA,&80,&09,&50
        DB      &AA,&00,&A5,&55,&68,&15,&50
        DB      &AA,&05,&50,&00,&56,&85,&50
        DB      &AA,&05,&0A,&AA,&00,&A9,&50
        DB      &AA,&14,&55,&55,&AA,&29,&50
        DB      &A8,&41,&40,&00,&15,&89,&50
        DB      &A8,&15,&15,&55,&41,&69,&50
        DB      &A8,&50,&55,&55,&54,&19,&50
        DB      &A9,&45,&50,&00,&15,&49,&50
        DB      &A9,&15,&05,&55,&40,&69,&50
        DB      &A9,&50,&55,&55,&55,&29,&50
        DB      &A8,&45,&00,&00,&01,&89,&50
        DB      &A9,&14,&05,&55,&A0,&61,&50
        DB      &A8,&51,&55,&55,&A8,&29,&50
        DB      &A9,&41,&55,&56,&A9,&09,&50
        DB      &A9,&05,&55,&56,&AA,&09,&50
        DB      &A9,&05,&55,&56,&AA,&01,&50
        DB      &A8,&05,&55,&55,&AA,&01,&50
        DB      &A8,&04,&05,&55,&02,&02,&50
        DB      &A8,&41,&41,&54,&56,&12,&50
        DB      &A8,&45,&50,&51,&56,&12,&50
        DB      &A8,&45,&04,&55,&05,&12,&50
        DB      &A8,&44,&00,&64,&11,&12,&50
        DB      &A8,&44,&10,&68,&15,&12,&50
        DB      &A8,&45,&04,&69,&15,&12,&50
        DB      &A8,&55,&54,&6A,&A9,&52,&50
        DB      &A8,&55,&54,&6A,&A9,&52,&50
        DB      &A8,&55,&55,&6A,&95,&52,&50
        DB      &A8,&55,&55,&AA,&A5,&56,&50
        DB      &AA,&55,&55,&AA,&A5,&56,&50
        DB      &AA,&15,&51,&A6,&A9,&46,&50
        DB      &AA,&15,&51,&66,&A9,&49,&50
        DB      &AA,&85,&54,&1A,&A9,&49,&50
        DB      &AA,&85,&55,&5A,&A9,&49,&50
        DB      &AA,&85,&55,&9A,&A9,&49,&50
        DB      &AA,&85,&55,&AA,&A9,&49,&50
        DB      &AA,&85,&55,&6A,&A9,&49,&50
        DB      &AA,&95,&50,&06,&A5,&4A,&50
        DB      &AA,&95,&55,&6A,&A5,&1A,&50
        DB      &AA,&A5,&55,&56,&A5,&1A,&50
        DB      &AA,&A5,&54,&06,&A5,&1A,&50
        DB      &AA,&A1,&55,&2A,&94,&1A,&50
        DB      &AA,&A1,&56,&AA,&94,&42,&90
        DB      &AA,&A4,&56,&AA,&94,&42,&90
        DB      &AA,&A4,&56,&AA,&50,&40,&90
        DB      &AA,&A4,&15,&A9,&50,&40,&A0
        DB      &AA,&A4,&05,&55,&40,&50,&20
        DB      &AA,&AA,&80,&0A,&69,&55,&50
        DB      &AA,&A8,&00,&00,&0A,&55,&50
        DB      &AA,&A0,&00,&01,&42,&95,&50
        DB      &AA,&A0,&00,&00,&01,&15,&50
        DB      &AA,&80,&00,&00,&89,&95,&50
        DB      &AA,&80,&00,&00,&01,&95,&50
        DB      &AA,&00,&00,&00,&05,&65,&50
        DB      &AA,&00,&00,&00,&00,&65,&50
        DB      &AA,&00,&00,&00,&21,&65,&50
        DB      &A8,&00,&00,&00,&14,&A5,&50
        DB      &A8,&00,&00,&00,&44,&A5,&50
        DB      &A8,&00,&00,&01,&09,&65,&50
        DB      &A8,&00,&00,&02,&18,&99,&50
        DB      &A8,&00,&00,&04,&A5,&99,&50
        DB      &A8,&00,&00,&10,&00,&19,&50
        DB      &A8,&01,&50,&01,&54,&09,&50
        DB      &A8,&05,&55,&55,&64,&19,&50
        DB      &A8,&05,&55,&55,&A9,&19,&50
        DB      &A8,&05,&55,&55,&AA,&11,&50
        DB      &A9,&05,&55,&56,&AA,&11,&50
        DB      &A9,&05,&55,&56,&AA,&11,&50
        DB      &A9,&15,&55,&56,&AA,&01,&50
        DB      &A9,&15,&55,&5A,&AA,&01,&50
        DB      &A9,&15,&01,&58,&0A,&01,&50
        DB      &A9,&14,&50,&50,&52,&01,&50
        DB      &A8,&41,&54,&51,&55,&11,&50
        DB      &A8,&55,&04,&51,&05,&11,&50
        DB      &A8,&54,&40,&64,&41,&11,&50
        DB      &A8,&55,&04,&69,&46,&11,&50
        DB      &A8,&55,&54,&69,&6A,&11,&50
        DB      &A9,&55,&54,&6A,&5A,&51,&50
        DB      &A9,&45,&54,&6A,&9A,&51,&50
        DB      &A9,&45,&55,&6A,&AA,&51,&50
        DB      &AA,&45,&55,&AA,&AA,&65,&50
        DB      &AA,&45,&55,&AA,&A9,&25,&50
        DB      &AA,&45,&51,&AA,&A9,&25,&50
        DB      &AA,&05,&51,&A6,&A9,&05,&50
        DB      &AA,&05,&54,&1A,&A9,&05,&50
        DB      &AA,&85,&55,&1A,&A9,&05,&50
        DB      &AA,&85,&55,&69,&A5,&15,&50
        DB      &AA,&85,&55,&69,&A5,&15,&50
        DB      &AA,&81,&55,&69,&A5,&15,&50
        DB      &AA,&A1,&50,&16,&A5,&15,&50
        DB      &AA,&A1,&55,&69,&A5,&15,&50
        DB      &AA,&A1,&55,&56,&A4,&55,&50
        DB      &AA,&A1,&54,&06,&A4,&55,&50
        DB      &AA,&A4,&55,&6A,&A4,&55,&50
        DB      &AA,&A4,&55,&AA,&A4,&55,&50
        DB      &AA,&A4,&55,&AA,&54,&55,&50
        DB      &AA,&A4,&15,&6A,&50,&55,&50
        DB      &AA,&A4,&15,&69,&50,&55,&50
        DB      &AA,&A4,&05,&55,&40,&55,&50
        DB      &FF,&FF,&FF,&7F,&FF,&FF,&F5
        DB      &FF,&FF,&FD,&DF,&FF,&FF,&F5
        DB      &FF,&FF,&F6,&F7,&FF,&FF,&F5
        DB      &FF,&FF,&F5,&D7,&FF,&FF,&F5
        DB      &FF,&FF,&D6,&F5,&FF,&FF,&F5
        DB      &FF,&FF,&D5,&D5,&FF,&FF,&F5
        DB      &FF,&FF,&56,&F6,&7F,&FF,&F5
        DB      &FF,&FF,&55,&D6,&7F,&FF,&F5
        DB      &FF,&FF,&56,&F6,&7F,&FF,&F5
        DB      &FF,&FF,&55,&D6,&7F,&FF,&F5
        DB      &FF,&FD,&56,&F5,&9F,&FF,&F5
        DB      &FF,&FD,&56,&F5,&9F,&FF,&F5
        DB      &FF,&FD,&55,&D5,&9F,&FF,&F5
        DB      &FF,&FD,&56,&F5,&9F,&FF,&F5
        DB      &FF,&FD,&59,&F5,&5F,&FF,&F5
        DB      &FF,&FD,&59,&FE,&5F,&FF,&F5
        DB      &FF,&FD,&59,&BE,&5F,&FF,&F5
        DB      &FF,&FD,&59,&BE,&5F,&FF,&F5
        DB      &F5,&FD,&65,&6F,&9F,&D7,&F5
        DB      &F5,&7D,&65,&6F,&9F,&57,&F5
        DB      &F9,&7D,&65,&5B,&9F,&5B,&F5
        DB      &F9,&7D,&95,&5B,&EF,&5B,&F5
        DB      &FA,&5D,&95,&5B,&ED,&6F,&F5
        DB      &FA,&5D,&95,&5B,&ED,&6F,&F5
        DB      &FA,&5D,&95,&5B,&FD,&6F,&F5
        DB      &FA,&56,&55,&5B,&FD,&6F,&F5
        DB      &FE,&96,&55,&5B,&F5,&BF,&F5
        DB      &FE,&96,&55,&5B,&F5,&BF,&F5
        DB      &FE,&96,&55,&5B,&F5,&BF,&F5
        DB      &FE,&96,&55,&56,&F5,&BF,&F5
        DB      &FE,&96,&55,&56,&F5,&BF,&F5
        DB      &FE,&96,&55,&56,&75,&BF,&F5
        DB      &FE,&96,&55,&56,&75,&BF,&F5
        DB      &FE,&95,&95,&55,&D5,&BF,&F5
        DB      &FE,&95,&95,&55,&D5,&BF,&F5
        DB      &FE,&BD,&95,&55,&DF,&7F,&F5
        DB      &FE,&E9,&7F,&FF,&5B,&7F,&F5
        DB      &FD,&E9,&D5,&55,&DA,&DF,&F5
        DB      &FD,&E9,&7F,&FF,&5A,&DF,&F5
        DB      &FD,&E9,&7F,&FF,&5A,&DF,&F5
        DB      &FD,&E9,&FF,&FF,&DA,&DF,&F5
        DB      &FD,&E9,&DF,&FD,&DA,&DF,&F5
        DB      &FD,&79,&DF,&FD,&DB,&6F,&F5
        DB      &FA,&7A,&77,&F7,&6B,&6F,&F5
        DB      &FA,&7A,&75,&57,&6B,&6F,&F5
        DB      &E9,&7A,&75,&57,&6B,&6B,&F5
        DB      &E9,&5E,&7D,&5F,&AD,&5B,&F5
        DB      &A5,&5E,&9F,&FD,&AD,&5A,&F5
        DB      &A5,&5E,&9F,&F9,&AD,&56,&F5
        DB      &95,&57,&95,&55,&B5,&56,&B5
        DB      &95,&57,&95,&56,&B5,&55,&B5
        DB      &95,&55,&A5,&5A,&95,&55,&A5


Just do this:
open the Assembler, load this file in, and assemble it.
Then open the GFX viewer, set it's address to &9920 (without &) and set: width to 7, height to 52 and zoom to 1.

The sprites are linear!
WinAPE's GFXviewer can show these sprites, too...
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

no full release yet!
But here's another new beta:
http://cpc-live.com/data/download.php?type=-beta&fichier=2010_11_12_JavaCPC_Desktop_BETA.zip

New: Multiface 2 emulation.

(To enable check system-settings)


Demo:
http://cpc-live.com/mf2

Have fun!

Btw.: "HOME" or "POS 1" is the multiface button!
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

TFM

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Devilmarkus

Working on CPC-plus image conversion in JavaCPC-Paint:
 
 

So you will be able to edit / create SCR files for the CPC+.
Also, when JavaCPC cannot emulate the + ;)
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