News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_ronaldo

#CPCtelera 1.4.2. release

Started by ronaldo, 11:59, 11 May 15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Carnivius

ok next problem

Quote
This setup script will help you configure CPCtelera in your system.

===============================================================
== 1: CPCtelera initial tests
===============================================================
> Checking directory structure... [ OK ]
> Checking important files....... [ OK ]
> Checking required commands...
>>> Looking for 'gcc'... [ OK ]
>>> Looking for 'g++'... [ OK ]
>>> Looking for 'make'...

#########################
## UNRECOVERABLE ERROR ##
#########################
##> Command 'make' not found installed in the system. make is required for all C                            PCtelera's build systems. Please, install it an run setup again.


pc@TARDIS ~/cpctelera
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

mr_lou

Quote from: Carnivac on 18:34, 09 July 15
ok next problem

Well, it's been lots of years since I touched Windows.
But according to the installation guide, those packages should be installed when you installed Cygwin.
Sorry I can't help.
It's clear that the install script complains that the "make" program is missing. Should be a part of Cygwin as far as I understand. But I suppose you could search for "make" elsewhere online.

Paulo Garcia

I don't think make is installed by default. Check this Stack Overflow answer that will probably help you: c++ - Cygwin Make bash command not found - Stack Overflow


I hope that helps


Paulo

Carnivius

Ok i ran the cygwin setup again and looked for make and select the make gnu thingy cos the other ones were gnus too.

Quote
> Checking directory structure... [ OK ]
> Checking important files....... [ OK ]
> Checking required commands...
>>> Looking for 'gcc'... [ OK ]
>>> Looking for 'g++'... [ OK ]
>>> Looking for 'make'... [ OK ]
>>> Looking for 'bison'... [ OK ]
>>> Looking for 'flex'... [ OK ]
> Checking required libraries...
>>> Looking for 'boost/graph/adjacency_list.hpp'... [ OK ]
>>> Looking for 'libintl.h'... [ OK ]
Everything seems to be OK.

===============================================================
== 2: Building CPCtelera tools, z80 library and examples
===============================================================
> Proceeding to build required tools to build and manage CPCtelera and other software for Amstrad CPC (This might take a while, depending on your system):
>>> Building compilation tools:                                     1%

Progress!   Seems busy now building stuffs.  I go play PS4 while it does that.   Thanks for help.  I will probably require more.  :)
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

ronaldo

@Carnivac: sorry, man. I should make an additional document with install instruction for non-Linux programmers. I think I'll make a video.

Take a look at the instructions I left you on the previous link. There is a list of software requirements you have to tell cygwin to install. Make is just one of them, but you require more stuff.

Carnivius

Quote from: ronaldo on 19:22, 09 July 15
@Carnivac: sorry, man. I should make an additional document with install instruction for non-Linux programmers. I think I'll make a video.

Take a look at the instructions I left you on the previous link. There is a list of software requirements you have to tell cygwin to install. Make is just one of them, but you require more stuff.

You're right. 
Quote

       
  • gcc-core, gcc-g++, make
  • bison, flex, libboost-devel, libintl-devel
I don't know how I missed 'make' before. I sorry. :(
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

ronaldo

@Has it finally installed itself propperly?

If you need anything just ask, and I'll try to answer ASAP :) (though I'm in the middle of a trip)

Carnivius

Thanks

Trying to figure out Retro Game Asset Studio.   I imported a sprite I did in Paint Shop Pro but the colours got messed up so I went and changed the palette in RGAS to match the sprite... imported again...and the palette got all messed up again making colours 'available' that I had clearly removed from the choice of 16.  Getting bit frustrated.  ???

ok getting there...  slowly... i wanna start with a simple lil project. 
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

lachlank

Quote from: Carnivac on 21:27, 09 July 15
Thanks

Trying to figure out Retro Game Asset Studio.   I imported a sprite I did in Paint Shop Pro but the colours got messed up so I went and changed the palette in RGAS to match the sprite... imported again...and the palette got all messed up again making colours 'available' that I had clearly removed from the choice of 16.  Getting bit frustrated.  ???

ok getting there...  slowly... i wanna start with a simple lil project.


If you have any issues with RGAS just email me the file you're trying to import and I'll take a look (lachlankeown at gmail).






lachlank

This is probably not the right place, but I thought it would be useful to start a collection of useful functions for CPCTelera. In due course the more common may become candidates to be included in the core library itself.


Firstly I have a function for printing mode 0 characters of width 4 pixels on screen, without using firmware. I have also attached the RGAS file so you can change colours (right-click foreground/background colour tool button). NOTE this function only prints upper case characters within the ascii range 32(Space) - 90(Z). If you pass a string with characters outside this range you will get a sprite from elsewhere in memory i.e. garbage.


void printString(u8 *str, u8 x, u8 y) {   
   u8* scrAddr = cpct_getScreenPtr ((void *) 0xC000, x, y);   
   
   while (*str > 0) {
      u8 *charSprite = G_Chars + ((*str - 32) * 16);
     
     
      cpct_drawSprite (charSprite, scrAddr, 2, 8);
     
      str++;
      scrAddr += 2;
     
   }   
   
}



const unsigned char G_Chars[944] = {
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,0xD1, 0xF3,0xD1, 0xF3,
   0xF3, 0xF3, 0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF1,0xE2, 0xD1,0xC0, 0xD1,0xCF, 0xDB,0xFC, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xE2, 0xF3,0xF0, 0xF1,0xC0, 0xF3,0xC0, 0xD1,
   0xE7, 0xDB, 0xFC, 0xF9,0xE2, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF2, 0xF3,
   0xC0, 0xD1, 0xC0, 0xD1,0xCF, 0xDB,0xF6, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xE2, 0xF3, 0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,0xCF, 0xDB,0xFC, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xC0, 0xF3,0xF1, 0xF3,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF3,0xC0, 0xF3,0xF3, 0xF3,
   0xE2, 0xD1, 0xF3, 0xF1,0xF3, 0xD1,0xF3, 0xD1,0xF3, 0xDB,0xF3, 0xF9,
   0xE2, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xE2, 0xF3,0xF0, 0xF1,
   0xC0, 0xD1, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xC0, 0xD1,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xF3, 0xD1, 0xF3, 0xF1,0xE2, 0xD1,0xE2, 0xF3,0xCF, 0xF3,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xE2, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xF3, 0xD1,0xC0, 0xD1,0xDB, 0xF3,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xF3, 0xD1,0xE2, 0xD1,
   0xF3, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,
   0xC0, 0xF3, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xF3, 0xD1, 0xF3, 0xD1,0xF3, 0xDB,0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,
   0xF3, 0xDB, 0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,0xF3, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF2, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xF3, 0xD1,0xF3, 0xF1,0xE2, 0xF3,0xC0, 0xF3,
   0xE7, 0xF3, 0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF3, 0xF3,0xCF, 0xDB,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xD1, 0xF3, 0xF1, 0xF3,0xE2, 0xF3,0xE2, 0xD1,0xE7, 0xF3,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xF3, 0xD1,0xE2, 0xD1,
   0xE7, 0xF3, 0xF3, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF9, 0xF9,
   0xD1, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xF3,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xC0, 0xF3, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,
   0xDB, 0xF3, 0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,
   0xD1, 0xF3, 0xC0, 0xD1,0xDB, 0xF3,0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF3,0xD1, 0xF3,0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF2, 0xF3,
   0xE2, 0xF3, 0xE2, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xE2, 0xD1, 0xF3, 0xF1,0xF3, 0xD1,0xF3, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xC0, 0xF3,0xC0, 0xF3,
   0xDB, 0xDB, 0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xD1, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF3,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xCF, 0xF3,0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xF3,0xC0, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF2, 0xF3,0xE2, 0xF3,0xE2, 0xF3,
   0xE7, 0xF3, 0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF6, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xC0, 0xD1, 0xE2, 0xF3,0xCF, 0xDB,0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF3, 0xF1,0xE2, 0xD1,0xE2, 0xF3,
   0xCF, 0xF3, 0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3};





lachlank

Nextly a function to set the stack location. This is useful if you are doing double-buffering with the page 0x8000. Although a small stack will fit in the empty space before 0xC000, any complex functions will rapidly push this into the visible area, in which case a good choice for stack location is 0x8000. Note this must be called from main(), or from an inline function called from main (i.e. when the stack is empty). And probably after disabling firmware.



// in c code
extern void SetStack();


void main() {
   SetStack();
   ...
}


; in assembly (.s file).

.area _CODE


_SetStack::
pop hl ; preserve return address in main()
ld sp, #0x8000 ; whatever address you want stack to start at
jp (hl) ; return




FloppySoftware

Quote from: ronaldo on 17:06, 09 July 15
Sorry, guys. These days I'm presenting some work in a spanish conference (JENUI 2015) and have extremely limited time.

@Paulo Garcia: CPCRSLib has some functionalities that CPCtelera doesn't. CPCRSLib was developed years ago and was more focused on functionality. CPCtelera is very young and is mainly focused on code quality, documentation and usability. It takes way longer for any given functionality to be implemented for CPCtelera simply because there are much more requisites (mainly usability and documentation). Said this, a coder having experience with CPCRSLib may want to continue using it because it has these extra functions, and the coder is used or has previous code developed for it.

@mr_lou: this warning does not normally represent a problem. What it is saying to you is that the optimizer has found a different way of implementing your logic to make it faster. That can happen, for instance, if one of your "doStuff()" functions is still a placeholder with nothing inside or, if that function has an code flow that does nothing in general or under some assumptions. I would need to analize your code for understanding better your personal case.

@FloppySoftware, @mr_lou: Joy0_Up and other keyID values are constants. It does not make sense at all to declare them as volatile, as they shouldn't change at all and the compiler may implement them with fixed values in the code (not with a given value stored at a given memory location). Even if that was legal, it would be fatal, as it would destroy compiler possibilities to optimize based on those values being constants.

Oh, sorry, I thought they were simple variables, not constants.

In this case, I would have a look to the generated Z80 code, to check possible problems.

Enviado desde mi GT-S6500D usando Tapatalk 2

floppysoftware.es < NEW URL!!!
cpm-connections.blogspot.com.es

Carnivius

Quote from: lachlank on 22:53, 09 July 15

If you have any issues with RGAS just email me the file you're trying to import and I'll take a look (lachlankeown at gmail).

Cheers.  Will do. :)
It's a neat program.
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

ervin

Quote from: lachlank on 23:29, 09 July 15
This is probably not the right place, but I thought it would be useful to start a collection of useful functions for CPCTelera. In due course the more common may become candidates to be included in the core library itself.


Firstly I have a function for printing mode 0 characters of width 4 pixels on screen, without using firmware. I have also attached the RGAS file so you can change colours (right-click foreground/background colour tool button). NOTE this function only prints upper case characters within the ascii range 32(Space) - 90(Z). If you pass a string with characters outside this range you will get a sprite from elsewhere in memory i.e. garbage.


void printString(u8 *str, u8 x, u8 y) {   
   u8* scrAddr = cpct_getScreenPtr ((void *) 0xC000, x, y);   
   
   while (*str > 0) {
      u8 *charSprite = G_Chars + ((*str - 32) * 16);
     
     
      cpct_drawSprite (charSprite, scrAddr, 2, 8);
     
      str++;
      scrAddr += 2;
     
   }   
   
}



const unsigned char G_Chars[944] = {
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,0xD1, 0xF3,0xD1, 0xF3,
   0xF3, 0xF3, 0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF1,0xE2, 0xD1,0xC0, 0xD1,0xCF, 0xDB,0xFC, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xE2, 0xF3,0xF0, 0xF1,0xC0, 0xF3,0xC0, 0xD1,
   0xE7, 0xDB, 0xFC, 0xF9,0xE2, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF2, 0xF3,
   0xC0, 0xD1, 0xC0, 0xD1,0xCF, 0xDB,0xF6, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xE2, 0xF3, 0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,0xCF, 0xDB,0xFC, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xC0, 0xF3,0xF1, 0xF3,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF3,0xC0, 0xF3,0xF3, 0xF3,
   0xE2, 0xD1, 0xF3, 0xF1,0xF3, 0xD1,0xF3, 0xD1,0xF3, 0xDB,0xF3, 0xF9,
   0xE2, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xE2, 0xF3,0xF0, 0xF1,
   0xC0, 0xD1, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xC0, 0xD1,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF3, 0xF3,0xF3, 0xF3,0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xF3, 0xD1, 0xF3, 0xF1,0xE2, 0xD1,0xE2, 0xF3,0xCF, 0xF3,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xE2, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xF3, 0xD1,0xC0, 0xD1,0xDB, 0xF3,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xF3, 0xD1,0xE2, 0xD1,
   0xF3, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,
   0xC0, 0xF3, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xF3, 0xD1, 0xF3, 0xD1,0xF3, 0xDB,0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,
   0xF3, 0xDB, 0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,0xF3, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xF3, 0xF3, 0xF2, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xE7, 0xF3,0xF6, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xF3, 0xD1,0xF3, 0xF1,0xE2, 0xF3,0xC0, 0xF3,
   0xE7, 0xF3, 0xF3, 0xF9,0xF3, 0xD1,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF3, 0xF3,0xCF, 0xDB,0xF3, 0xF3,0xF3, 0xF3,0xF3, 0xF3,
   0xD1, 0xF3, 0xF1, 0xF3,0xE2, 0xF3,0xE2, 0xD1,0xE7, 0xF3,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xF3, 0xD1,0xE2, 0xD1,
   0xE7, 0xF3, 0xF3, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xE2, 0xF3,0xF2, 0xF3,
   0xE2, 0xF3, 0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF9, 0xF9,
   0xD1, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xF3,
   0xDB, 0xDB, 0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xC0, 0xF3, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,0xD1, 0xF3,0xC0, 0xD1,
   0xDB, 0xF3, 0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF3,
   0xD1, 0xF3, 0xC0, 0xD1,0xDB, 0xF3,0xF9, 0xF3,0xD1, 0xF3,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF3,0xD1, 0xF3,0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,
   0xDB, 0xDB, 0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF2, 0xF3,
   0xE2, 0xF3, 0xE2, 0xF3,0xE7, 0xF3,0xF6, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xE2, 0xD1, 0xF3, 0xF1,0xF3, 0xD1,0xF3, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xC0, 0xF3,0xC0, 0xF3,
   0xDB, 0xDB, 0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xD1, 0xF3,0xF1, 0xF3,
   0xD1, 0xF3, 0xD1, 0xF3,0xDB, 0xF3,0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,0xDB, 0xDB,0xF9, 0xF9,
   0xD1, 0xD1, 0xF3, 0xF3,0xD1, 0xD1,0xF0, 0xF1,0xC0, 0xD1,0xC0, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF9, 0xF3,
   0xD1, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF3,0xC0, 0xD1,0xF3, 0xF3,0xC0, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xCF, 0xF3,0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,
   0xC0, 0xD1, 0xF1, 0xF1,0xD1, 0xF3,0xC0, 0xD1,0xF3, 0xDB,0xF9, 0xF9,
   0xC0, 0xD1, 0xF3, 0xF3,0xC0, 0xD1,0xF2, 0xF3,0xE2, 0xF3,0xE2, 0xF3,
   0xE7, 0xF3, 0xF6, 0xF3,0xE2, 0xF3,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xD1, 0xD1, 0xD1, 0xD1,0xDB, 0xDB,0xF9, 0xF9,0xC0, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,0xCF, 0xDB,0xF6, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,0xD1, 0xD1,0xD1, 0xD1,
   0xCF, 0xDB, 0xFC, 0xF9,0xD1, 0xD1,0xF3, 0xF3,0xD1, 0xD1,0xF1, 0xF1,
   0xC0, 0xD1, 0xE2, 0xF3,0xCF, 0xDB,0xF9, 0xF9,0xD1, 0xD1,0xF3, 0xF3,
   0xD1, 0xD1, 0xF1, 0xF1,0xD1, 0xD1,0xC0, 0xD1,0xE7, 0xF3,0xF6, 0xF3,
   0xE2, 0xF3, 0xF3, 0xF3,0xC0, 0xD1,0xF3, 0xF1,0xE2, 0xD1,0xE2, 0xF3,
   0xCF, 0xF3, 0xF9, 0xF3,0xC0, 0xD1,0xF3, 0xF3};






That's fantastic! Thanks for uploading it.
I was actually thinking about the need for such a feature just last night (and wondering how on earth to do it)!


ervin

I've gotta say... it's great to see so much interest in cpctelera!
It's an absolutely *outstanding* dev tool.

Who knows... it may usher in a new era of cpc homebrew.

mr_lou

Quote from: lachlank on 22:53, 09 July 15If you have any issues with RGAS just email me the file you're trying to import and I'll take a look (lachlankeown at gmail).

We had some issues with importing graphics. RGAS seemed to always crash for some reason when trying to import a GIF or a PNG that was saved from Photoshop.
But then we learned that it could be imported from clipboard instead, and that procedure has been problem free.  :)

mr_lou

Quote from: ervin on 02:03, 10 July 15I've gotta say... it's great to see so much interest in cpctelera!
It's an absolutely *outstanding* dev tool.
Agreed.  :)
This is actually the 2nd time in my life I'm looking at C.
The first time was also in relation to an Amstrad CPC game project we (girlfriend and me) did in 2009, called Sort'em. (Amstrad CPC version of a cellphone game we made back in 2006 and in 2013 made a more modern version for Android called Pirate Diamonds).
Back then in 2009 I used Z88DK and CPCRSLIB, which was also rather fun.
CPCWiki page about CPCRSLIB.
CPCWiki page about Z88DK.

I find it slightly funny that my only C experience comes from Amstrad CPC game-development.  :)
Like you, I'm also (still) trying to understand pointers and why/when to use extern variables.  :)

Quote from: ervin on 02:03, 10 July 15Who knows... it may usher in a new era of cpc homebrew.
That would be awesome.
For the project we're working on now with CPCTelera, I really wanted to use BASIC, in order to be able to code directly on the CPC. But as I quickly learned it wasn't fast enough, I turned to CPCTelera.
It may just be my imagination, but I think SDCC / CPCTelera gives a better performance than Z88DK did back in 2009.

I think the oldtime coders will prefer sticking with Assembler and/or Z88DK because it resembles their coding style the most.
Otherwise they'll use SDCC with NoRecess' tools in order to convert the "SDCC Assembler" syntax into Maxam syntax before compiling with Pasmo.

I think only guys like you and me, with no prior experience with CPC development will truly embrace SDCC / CPCTelera. Coming from Java myself, I just prefer writing numbers like "0xc000" instead of "#C000". I know that's probably a silly detail, but it matters.
The only problem we can run into, is when/if we need help with adding some Assembler functions. Most CPC Assembler coders are only familir with Maxam style, and SDCC does a few things differently, which might discourage oldtimers from trying to help out.

Fortunately our game is coming along nicely too without any issues so far.  :)

ervin

Quote from: mr_lou on 06:14, 10 July 15
Agreed.  :)
This is actually the 2nd time in my life I'm looking at C.
The first time was also in relation to an Amstrad CPC game project we (girlfriend and me) did in 2009, called Sort'em. (Amstrad CPC version of a cellphone game we made back in 2006 and in 2013 made a more modern version for Android called Pirate Diamonds).
Back then in 2009 I used Z88DK and CPCRSLIB, which was also rather fun.
CPCWiki page about CPCRSLIB.
CPCWiki page about Z88DK.

I find it slightly funny that my only C experience comes from Amstrad CPC game-development.  :)
Like you, I'm also (still) trying to understand pointers and why/when to use extern variables.  :)
That would be awesome.
For the project we're working on now with CPCTelera, I really wanted to use BASIC, in order to be able to code directly on the CPC. But as I quickly learned it wasn't fast enough, I turned to CPCTelera.
It may just be my imagination, but I think SDCC / CPCTelera gives a better performance than Z88DK did back in 2009.

I think the oldtime coders will prefer sticking with Assembler and/or Z88DK because it resembles their coding style the most.
Otherwise they'll use SDCC with NoRecess' tools in order to convert the "SDCC Assembler" syntax into Maxam syntax before compiling with Pasmo.

I think only guys like you and me, with no prior experience with CPC development will truly embrace SDCC / CPCTelera. Coming from Java myself, I just prefer writing numbers like "0xc000" instead of "#C000". I know that's probably a silly detail, but it matters.
The only problem we can run into, is when/if we need help with adding some Assembler functions. Most CPC Assembler coders are only familir with Maxam style, and SDCC does a few things differently, which might discourage oldtimers from trying to help out.

Fortunately our game is coming along nicely too without any issues so far.  :)

Yeah, this is my first time using C!
It's pretty hard going at first (I'm used to various BASIC dialects, SQL Server, and z80 assembler!!!), but every day it becomes more and more natural.

Sort'em looks very interesting. I'll have to give that a go soon.
:)

I've read that SDCC gives considerably better performance than z88dk in many cases.
Have a look at this:
SDCC vs z88dk: Comparing size and speed

I've actually done a bit of CPC development over the last few years, generally using the wonderful ccz80 compiler, combined with assembler.
3D-Maze
character-based tile engine with parallax scrolling
Chunky Pixel Collision
Chunky Pixel Curator - WIP
Chunky Pixel Curator

Now of course I'm using cpctelera to create this:
My CPCRetroDev2015 entry - RUN"CPC"

I loved ccz80 - it was easy, and produced very readable assembler code, which helped me learn ASM a lot faster.
Unfortunately it has no support for signed values, so all numbers are unsigned, and workarounds need to be put in place for negative numbers (much like ASM, actually).

That's the main reason why I decided to look at cpctelera.
SDCC had always seemed "too hard", especially with all the workarounds needed to use it (like the tools that NoRecess talks about), but cpctelera takes all of that difficulty away!

Also, SDCC has really impressive optimisation under the hood, whereas in ccz80 you'd need to be more careful to get maximum performance.

As I've got more comfortable with SDCC, I've started changing some things to ASM, even learning to deal with the weird syntax differences.
I'm personally used to using #C000 instead of 0xC000, but it's only a small difference that's pretty easy to switch to.
Other differences are a bit stranger, but not really any harder - like LD A,1(IX) instead of LD A,(IX+1).

The thing I've had the most trouble with is talking to SDCC pointers from ASM.
That took many hours of nail-biting frustration before I cracked it.
But I tell you what - when I got it working, and I saw the speed boost that resulted from the effort, it was all worth it!
It felt like I had just beaten Dark Souls (my favourite game of all time - I'd love to see a side-scrolling CPC version of it)!
8)

So for any subsequent CPC dev, I'll be staying with cpctelera.
I absolutely love it.
It's a brilliant dev system, is very actively supported (ronaldo is brilliant and listens to all suggestions), and it looks like it will continue to grow and improve - especially seeing as more and more of us on this forum seem to be giving it a try.


ervin

Just wondering - anyone here entering CPCRetroDev2015, and using cpctelera for their project?
I'm hoping to see lots of entries this year!
;D

I'm really thankful to the cpctelera team - we are truly blessed to receive such an incredible tool.


mr_lou

Quote from: ervin on 07:38, 10 July 15Just wondering - anyone here entering CPCRetroDev2015, and using cpctelera for their project?

If we manage to complete our game, I don't see any reason not to participate in CPCRetroDev2015.
August 15th will be a big test day so to speak, when we'll present it to our mates. So I think we'll participate, but it's not 100% certain yet.

ervin

Quote from: mr_lou on 09:20, 10 July 15
If we manage to complete our game, I don't see any reason not to participate in CPCRetroDev2015.
August 15th will be a big test day so to speak, when we'll present it to our mates. So I think we'll participate, but it's not 100% certain yet.

Best of luck!
I look forward to seeing your entry!
;D

Carnivius

I may enter CPCRetroDev2016 or 17 or 18 or whenever the hell I get smart enough to actually make something.  :-[
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

mr_lou

Quote from: ervin on 11:22, 10 July 15
Best of luck!
I look forward to seeing your entry!
;D

Likewise!  :)

Quote from: Carnivac on 11:58, 10 July 15
I may enter CPCRetroDev2016 or 17 or 18 or whenever the hell I get smart enough to actually make something.  :-[

I don't really have any experience with C, prior to the Z88DK/CPCRSLIB project I did back in 2009.
But if you have experience with other languages like e.g. Java or C# or PHP or Javascript, then I think you should be able to pick it up fairly fast.
Coming from BASIC (and no experience with other languages) may be difficult.

Carnivius

How do I load CPCtelera again?   Do I have to run the setup.sh thingy in the Terminal again?
Favorite CPC games: Count Duckula 3, Oh Mummy Returns, RoboCop Resurrection, Tankbusters Afterlife

ervin

Quote from: Carnivac on 14:54, 10 July 15
How do I load CPCtelera again?   Do I have to run the setup.sh thingy in the Terminal again?

Once it is installed, you won't need to run setup.sh again (unless you're installing a new version).
If you simply want to compile a project, open cygwin, navigate to the folder it lives in, and type "make".

I had lots of problems initially getting cpctelera to work, as I'm not from a linux background, and cygwin is like a translation layer between the windows file system, and the linux way of doing things.
I stumbled my way through it, so if you have any questions, please ask. I'm sure I can help you!  8)

But first I need to know - where do you have cygwin installed?
I've got it in C:\cygwin

Also, where do you have cpctelera installed?
Mine is in C:\cygwin\home\ErvinPajor\cpctelera

Is your installation similar (with your name instead of mine of course)?

My projects folder is in C:\cygwin\home\ErvinPajor\cpctelera\projects
(I created that folder manually).

Then within that I've got my runcpc project.
C:\cygwin\home\ErvinPajor\cpctelera\projects\runcpc

Have you got a project folder created somewhere?
(i.e. using the cpct_mkproject command?)

Powered by SMFPacks Menu Editor Mod