GP32 Homebrew Screen Problems


fishybawb

Hired Geek
Joined
Jul 22, 2005
Messages
1,115
Age
44
Location
York, UK
Website
Visit site
Hello, I'm a n00b :)

I'm not sure if this should go here or in the dev section, but bear with me. I bought a new (sealed in box) GP32 off eBay for the princely sum of £66, and it's been great - DrMD, Another World and CaSTaway are all excellent. My problem comes when trying to dev stuff myself. I've installed the compiler and Mr. Mirko's SDK, and the examples compile fine, but running them gives me strange screen problems:

GEEPEE:


GP32:


I've read up on the differences between the BLU and BLU+ - I was expecting the latter, but it must be old stock, because I need to use "Samsung" mode in DrMD not to have screen problems. I've tried changing the framebuffer init code to the BP version, with no luck. Please help!

Oh, and the firmware version is: "1.6.6 (2003.5.21)" if that helps :)
 
I get the same oddity with mirko's test proggies on my BLU (not BLU+) - so its doing something funky. I've not looked at libmirko to see whats going on though .. though I may have to one of these moments, so with all the machine failures I've had the last month, my gp32 build environment is hosed :)

jeff
 
Thanks, I think I've found the problem now. Mirko's code checks for a BIOS value being less than a certain value, when mine is equal to it. As a work around I'm just manually specifying gp_initFramebufferN, which will do for now ;) If I could get the SDK to compile, I'd fix it permanently, although I have no idea if this will mess the detection of other firmware versions up.
 
fishybawb posted on Aug 12 2005 at 08:52 AM said:
Thanks, I think I've found the problem now. Mirko's code checks for a BIOS value being less than a certain value, when mine is equal to it. As a work around I'm just manually specifying gp_initFramebufferN, which will do for now ;) If I could get the SDK to compile, I'd fix it permanently, although I have no idea if this will mess the detection of other firmware versions up.

There is no save way to auto detect a BLU+ machine. If the detection fails on your machine, you can manually override the autodetection, by pressing and holding the Left or Right shoulder button, at program starting.

So you dont need to patch the SDK, just press and hold the L or R button, thats it.
 
Last edited by a moderator:
mr.mirko posted on Aug 12 2005 at 03:24 PM said:
There is no save way to auto detect a BLU+ machine. If the detection fails on your machine, you can manually override the autodetection, by pressing and holding the Left or Right shoulder button, at program starting.

So you dont need to patch the SDK, just press and hold the L or R button, thats it.

Thanks for the reply :) My GP32's a BLU (not +) though, and it still isn't automatically detected - the SDK thinks it's a BLU+... I also tried holding down "L" when starting up to force the FLU/BLU version of the code, but couldn't seem to get it to work. I'll try again after work.
 
Last edited by a moderator:
fishybawb posted on Aug 12 2005 at 03:33 PM said:
mr.mirko posted on Aug 12 2005 at 03:24 PM said:
There is no save way to auto detect a BLU+ machine. If the detection fails on your machine, you can manually override the autodetection, by pressing and holding the Left or Right shoulder button, at program starting.

So you dont need to patch the SDK, just press and hold the L or R button, thats it.

Thanks for the reply :) My GP32's a BLU (not +) though, and it still isn't automatically detected - the SDK thinks it's a BLU+... I also tried holding down "L" when starting up to force the FLU/BLU version of the code, but couldn't seem to get it to work. I'll try again after work.

You need the latest SDK, here:
http://sourceforge.net/projects/mirkosdk/
 
Last edited by a moderator:
That's the version I have already. The "problem" is in gp_grafik.c:

Code:
if (biosv<0x01030606) bios=0; else bios=1;

I checked my 1.6.6 BLU BIOS, and the value pointed at by biosv is actually equal to 0x01030606, so the test fails. Would making it <= break the detection code for certain firmwares?
 
fishybawb posted on Aug 12 2005 at 04:12 PM said:
That's the version I have already. The "problem" is in gp_grafik.c:

Code:
if (biosv<0x01030606) bios=0; else bios=1;

I checked my 1.6.6 BLU BIOS, and the value pointed at by biosv is actually equal to 0x01030606, so the test fails. Would making it <= break the detection code for certain firmwares?

I cant answer this question, couse i only own one gp32 :)
But there are SO manny different bios versions / patched for blu(+) that it really makes no different changing this.
I think the best is to leave this untouched, and if someone runs into trouble, he can still press L or R shoulder button, and all is solved.
 
Last edited by a moderator:
Hi fishybawb. Yes, changing that to <= instead of just < will fix it, but you need to recompile the SDK. This usually goes very smoothly. What errors are you getting? Do you have a windows based dev environment?
 
pea posted on Aug 12 2005 at 10:32 PM said:
Hi fishybawb. Yes, changing that to <= instead of just < will fix it, but you need to recompile the SDK. This usually goes very smoothly. What errors are you getting? Do you have a windows based dev environment?

Hi pea. Yes, I'm using Windows. I only tried to compile it once, then gave up without really trying to solve the problem. I'm a lazy, lazy man :D Will I just need to mess about with the makefile a bit? Any pointers would be much appreciated - I'm at work now, but I'll post the specific errors I get when I'm back home.
 
Last edited by a moderator:
Hi fishybawb

The makefiles should work straight off I believe.

1) Edit the code (in the 'src/common' folder?)
2) Run 'make' in the src/common folder
3) Run 'make' in the lib folder to rebuild the SDK

:)

EDIT:
My makefile in src/common is:
Code:
CC = arm-elf-gcc
LD = arm-elf-gcc
AS = arm-elf-as
AR = arm-elf-ar


INCLUDES = -I../../include

CFLAGS = $(INCLUDES) -O2 -s -mtune=arm9tdmi -Wall
 
OBJS =  gp_arm.o  gp_irq.o  gp_cpuspeed.o  gp_grafik.o  gp_buttons.o  gp_memory.o  gp_timer.o

all:	$(OBJS)
	$(AR) rcs gp_common.a $(OBJS)
	cp gp_common.a ../../lib/
	rm *.o *.a

clean:
	rm -f *.o *~

And in lib it's like this (WARNING I THINK I REMOVED SOME STUFF HERE - ignore the $(AR) lines under all: and add your own)
Code:
CC = arm-elf-gcc
LD = arm-elf-gcc
AS = arm-elf-as
AR = arm-elf-ar

all:
	$(AR) x gp_common.a
	$(AR) x gp_sound.a
	$(AR) x gp_chatboard.a
	$(AR) x gp_smc.a
	$(AR) x gp_grafik.a
	$(AR) x gp_input.a
	$(AR) x gp_font8.a
	rm libmirkoSDK.a
	$(AR) rcs libmirkoSDK.a *.o
	rm *.o

	$(AR) x gp_asmclip.a
	$(AR) x gp_zda.a
	rm libaddon.a
	$(AR) rcs libaddon.a *.o
	rm *.o

clean:
	rm gp_common.a gp_sbox.a gp_sound.a gp_zda.a gp_chatboard.a gp_smc.a gp_asmclip.a
 
Yes, the screen looks like it should now. I also managed to get the "L" button bypass working - I have no idea what I was doing wrong before :unsure: Anyway, all is well. Thanks again :)
 
Back
Top