Leading the way to the Future
Welcome Guest, Login!
12 Apr 2012 11:16:07 am by KermMartian Quote
zeldaking wrote:
KermMartian wrote:
Ask us if you need help; you're probably either using the sprite routines wrong or not properly erasing the sprite when a mouse movement event is occurring.

It was doing that before I added the movement code. :/
And does it always do it? I mean, what does it do exactly? Are you using the masked sprite routine or the non-masking overwriting one?
13 Apr 2012 09:53:39 am by zeldaking Quote
Well, since I had to delete my 90-day trial emulator, I can't get a screenshot. So I will try to explain it. My sprite is pretty much the same as the DCS arrow, except more pixels, I have 4 grays in the sprite so I ran it through source coder and it gave me my data. In my program I call "CopySprite( curX, curY, 16, 16)" becuase my sprite is 16x16 pixels. After compiling and running it, what shows up on the screen is this: No color, just black and white sprite. Two of my sprites side to side. To top it off it drew a black box, 32x16 pixels right underneath both arrow sprites. The code is right... maybe.
13 Apr 2012 04:19:08 pm by PierrotLL Quote
About the emulator, you can install it on a virtual machin.

For the arrow, the problem could be in the sprite data, or in the sprite function. Verify first if data are correct.
14 Apr 2012 03:12:11 pm by KermMartian Quote
You can also use the Screen Receiver application to take screenshots. It sounds to me as if you've mismatched the 8-bit and 16-bit sprites and routines, personally. Smile
15 Apr 2012 10:38:18 pm by zeldaking Quote
I wasn't aware there was any differences in the 16-bit and 8-bit routines. Mind to fill me in?
Pierrot: Virtual machine?
16 Apr 2012 06:04:49 am by Ashbad Quote
zeldaking wrote:
I wasn't aware there was any differences in the 16-bit and 8-bit routines. Mind to fill me in?
Pierrot: Virtual machine?


8bit versus 16bit routines: 16bit routines take raw pixel data in RGB:5-6-5 format and simply draw them. 8bit routines use a palette of 256 colors, and sprite data made up of 8 bit values that correspond to colors in the palette.

As for a virtual machine, you can run another instance of Windows in a program such as VirtualBox and install it into that; the Prizm Emulation software will think you installed it on a whole new machine.
16 Apr 2012 08:41:06 am by KermMartian Quote
zeldaking wrote:
I wasn't aware there was any differences in the 16-bit and 8-bit routines. Mind to fill me in?
Pierrot: Virtual machine?
The 16-bit sprites and routines hold 16 bits of data per pixel, arranged as 5-6-5: 5 bits of red, 6 bits of green, 5 bits of blue. The 8-bit sprites and routines, on the other hand, work with 8 bits of data per pixel, as 3-3-2. The 8-bit sprites take up half the memory of the 16-bit sprites for a sprite of the same pixel dimensions, but can be made only of 1/256th the possible colors of the 16-bit versions.
16 Apr 2012 01:00:55 pm by zeldaking Quote
Yeah I understand that, but what is the difference in the routines?
22 Apr 2012 06:42:17 pm by zeldaking Quote
*Bump question
Code:

#include <color.h>
#include <display.h>
#include <display_syscalls.h>
#include <keyboard.hpp>
#include <string.h>
#include <keyboard_syscalls.h>
#include <system.h>
#include <stdlib.h>
#include <stdio.h>
#include "data.h"

#define true 1
#define LCD_WIDTH_PX 384 
#define LCD_HEIGHT_PX 216

void CopySprite(const void* data, int x, int y, int width, int height);
int keydownlast(int basic_keycode);
int curX=10;
int curY=10;

int main() {
   CopySprite(cursor, curX, curY, 16, 16);
   int key;
   while(true) {
      GetKey(&key);
      if (keydownlast(KEY_PRGM_UP) && curY > 8) {
         curY = curY-1;
         CopySprite(cursor, curX, curY, 16, 16);
         } else if (keydownlast(KEY_PRGM_DOWN) && curY < 160) {
         curY = curY+1;
         CopySprite(cursor, curX, curY, 16, 16);
      }

   Bdisp_PutDisp_DD();
}
return 0;
}
void CopySprite(const void* datar, int x, int y, int width, int height) {
   color_t*data = (color_t*) datar;
   color_t* VRAM = (color_t*)0xA8000000;
   VRAM += LCD_WIDTH_PX*y + x;
   for(int j=y; j<y+height; j++) {
      for(int i=x; i<x+width; i++) {
         *(VRAM++) = *(data++);
     }
     VRAM += LCD_WIDTH_PX-width;
   }
}
int keydownlast(int basic_keycode) {
   int row, col, word, bit;
   row = basic_keycode%10;
   col = basic_keycode/10-1;
   word = row>>1;
   bit = col + 8*(row&1);
   return (0 != (lastkey[word] & 1<<bit));
}

That is my code so far. Just very primitive cursor movements. But when I try to compile I get this:
Code:


C:\PrizmSDK-0.3\projects\Paint>..\..\bin\make.exe clean
rm -f -fr build C:/PrizmSDK-0.3/projects/Paint/Paint.bin C:/PrizmSDK-0.3/project
s/Paint/Paint.g3a

C:\PrizmSDK-0.3\projects\Paint>..\..\bin\make.exe
sh3eb-elf-gcc -MMD -MP -MF C:/PrizmSDK-0.3/projects/Paint/build/Paint.d -Os -Wal
l -std=c99 -mb -m4a-nofpu -mhitachi -nostdlib   -IC:/PrizmSDK-0.3/projects/Paint
/build -IC:/PrizmSDK-0.3/include -c C:/PrizmSDK-0.3/projects/Paint/src/Paint.c -
o Paint.o
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c: In function 'keydownlast':
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c:55:18: error: 'lastkey' undeclared (f
irst use in this function)
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c:55:18: note: each undeclared identifi
er is reported only once for each function it appears in
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c:50:18: warning: variable 'word' set b
ut not used [-Wunused-but-set-variable]
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c:56:1: warning: control reaches end of
 non-void function [-Wreturn-type]
make[1]: *** [Paint.o] Error 1
make: *** [build] Error 2

C:\PrizmSDK-0.3\projects\Paint>pause
Press any key to continue . . .

I know I sound very dumb, but what is wrong? :/
22 Apr 2012 06:43:51 pm by KermMartian Quote
Debugging compilation errors:

1) Find things that say "error". Fix them.
2) Find things that say "warning". Fix them.

For example, the thing to deal with first is this:
Code:
C:/PrizmSDK-0.3/projects/Paint/src/Paint.c:55:18: error: 'lastkey' undeclared (f
irst use in this function)
You didn't declare lastkey. Change int key; to int key,lastkey;, or add an int lastkey; somewhere in main().
26 Apr 2012 11:23:18 am by zeldaking Quote
I have it figured out. It now has a moveable cursor.
Concern:
Before I used Getkey(&key); to quit when pushing menu it wouldn't quit, obviously. Now when I added that in you can quit by pushing menu, but the screen has the battery satus image and the line across the top. How do I get rid of that.
Also I need to re-xor my sprites so when I move it doesn't leave a trail. How would I do that? Thanks