I cannot figure it out. Does DMA transfers run asynchronously with the CPU or not? I mean, when a DMA transfer is intiated does the CPU wait until its finished or does it not. The fact that there are 3 priority levels of DMA seem to suggest that a DMA can interrupt another, and you need a the CPU running to start a second DMA transfer to do the interrupting. Also, I have 4 DMA transfers on priority level 3 running back to back and they do not interfere with each other - either the CPU waits or the DMA transfer is amazingly fast. Which is it? Anyone??
why doesn't this work ?...
"ldl (hmmm), 0x12345678"
Dark Fader
> -----Oorspronkelijk bericht-----
> Van: Matthew Davies [mailto:MDavies@...]
> Verzonden: Friday, July 28, 2000 4:10 PM
> Aan: AGB list (E-mail)
> Onderwerp: [gbadev] Loading a 32-bit absolute address into a
> register in
> ARM
>
>
> Hi,
>
> I want to do this:
>
> ldr r0,#address
>
> This line is in a routine that gets relocated into WRAM so I
> cannot use the
> usual method of:
>
> ldr r0,=address
>
> which, as far as I can tell, creates a place in memory to
> store the address
> and then its is loaded pc relative. I've tried several ways
> now such as:
>
> ldr r0,#((address & 0xffff0000) >> 16),lsl #16
> orr r0,#(address & 0xffff)
>
> but that doesn't work either ( the assembler complains).
> There is also a
> GAS-specific adr pseudo-op but there's no documenation of it.
> 'adr' might
> do what I need. Basically I need to move a 32-bit address
> into a register
> based on a label. Does anyone know how?
>
> Regards,
>
> Matt J. Davies
> Programmer
> Acclaim Studios Ltd.
>
>
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
Mattias Andersson wrote:
>
> i know this isn't the right place to ask, but i'll ask anyway =)
> do you guys know anything about musyx?
Think of something very pants, and then think of Musyx. You'll have it in
one!
M00
hello!
i know this isn't the right place to ask, but i'll ask anyway =)
do you guys know anything about musyx? (or other soundsystems for
that matter)
i'm interested in trying it out..
that is, not with the gba hardware, but the software itself.
making music.
i wanna see what i can do when it comes to music with the gba.
and sound effects of course.. but mainly music..
so, is there any way to get hold of the sequencing software without
licensing, or even getting the player?
/mattias
Hi,
Please take a look at this code and tell why the following code doesn't
clear 1792 bytes (or 448 words) at _IRQTable. What happens is that it
copies from dmafill to _IRQTable for 1792 bytes.
REG_BASE = 0x04000000
DMA3SAD = 0x0d4
DMA3DAD = 0x0d8
DMA3CNT = 0x0dc
dmafill: .word 0
dmacnt: .word 0x850001c0
myroutine:
mov r3,#REG_BASE
ldr r4,=dmafill @ Set source
str r4,[r3,#DMA3SAD]
ldr r4,=_IRQTable @ Set destination
str r4,[r3,#DMA3DAD]
ldr r4,dmacnt @ 32-bit transfer with source fixed
str r4,[r3,#DMA3CNT] @ Go!
It seems to ignore the source fixed bit.
Regards,
Matt J. Davies
Programmer
Acclaim Studios Ltd.
In message <17398269E24ED31180940090279C2CE9C4831B@ASC-NT-EXCH1>
Matthew Davies <MDavies@...> wrote:
> Do any of you guys have an ICQ # ?
>
> Mine is 78711743. Feel free to say hello! It be good for developers to be
> in contact so we can help each other.
Mine is 36969334, you may contact me too if you wish...
--
exoticorn/icebird
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
ummm... that *did* have a message you know! hrmm! As I was saying,
16197965
- -----Original Message-----
From: David Pfeffer [mailto:DavidP@...]
Sent: Friday, July 28, 2000 10:35 AM
To: gbadev@egroups.com
Subje
-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.3 for non-commercial use <http://www.pgp.com>
iQA/AwUBOYGa+WU1FANHPcR9EQLTGACgsASL4HGFSd+VG+YBa6jUt/u1eMcAoPos
6Xro+YfS9xpJE7zW7wYdw9fC
=bdvV
-----END PGP SIGNATURE-----
Mine is 3133956, please feel free to request my auth! =)
WD
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
In message <17398269E24ED31180940090279C2CE9C4831A@ASC-NT-EXCH1>
Matthew Davies <MDavies@...> wrote:
> I want to do this:
>
> ldr r0,#address
No, you want to do this:
mov r0,#address
> This line is in a routine that gets relocated into WRAM so I cannot use the
> usual method of:
>
> ldr r0,=address
Yes, ldr r0,=address is a kind of macro which generates:
ldr r0,pointer_to_address
(somewhere else but near by...)
pointer_to_address:
equd address
(please note that i don't know the assembler you are referring to, but I'm
certain it works this way...)
While you can't use this in this case, you can write the above code
yourself, just make sure that this "pointer_to_address" will also
get copied to wram. As the ldr instruction in fact assembles to
"ldr r0,[pc,#offset]" which is relative addressing, this code will
also work when copied to some other address...
> which, as far as I can tell, creates a place in memory to store the address
> and then its is loaded pc relative. I've tried several ways now such as:
>
> ldr r0,#((address & 0xffff0000) >> 16),lsl #16
> orr r0,#(address & 0xffff)
You can do somehting similar to this, but this will need 4 instructions:
mov r0,#address & 0xff000000
orr r0,r0,#address & 0xff0000
orr r0,r0,#address & 0xff00
orr r0,r0,#address & 0xff
> but that doesn't work either ( the assembler complains). There is also a
> GAS-specific adr pseudo-op but there's no documenation of it. 'adr' might
> do what I need. Basically I need to move a 32-bit address into a register
> based on a label. Does anyone know how?
The "adr" pseudo op assembles to:
add r0,pc,#offset
This is the best method to use, but only works if the address you are
referring to is not more than 1024 bytes away from the instruction.
(Actually from the instruction+8... And it's only 256 bytes when the
target adress isn't wordaligned...)
Hope this helps.
--
exoticorn/icebird
Hi,
I want to do this:
ldr r0,#address
This line is in a routine that gets relocated into WRAM so I cannot use the
usual method of:
ldr r0,=address
which, as far as I can tell, creates a place in memory to store the address
and then its is loaded pc relative. I've tried several ways now such as:
ldr r0,#((address & 0xffff0000) >> 16),lsl #16
orr r0,#(address & 0xffff)
but that doesn't work either ( the assembler complains). There is also a
GAS-specific adr pseudo-op but there's no documenation of it. 'adr' might
do what I need. Basically I need to move a 32-bit address into a register
based on a label. Does anyone know how?
Regards,
Matt J. Davies
Programmer
Acclaim Studios Ltd.
I've seen this behaviour before with GBDK for GB(C)....
Dark Fader
-----Oorspronkelijk bericht----- Van: Matthew Davies [mailto:MDavies@...] Verzonden: Tuesday, July 25, 2000 4:53 PM Aan: AGB list (E-mail) Onderwerp: [gbadev] Watch out!
Hi,
Something you guys should look out for.
On a default linker script (i.e. you don't create one yourself), the code (for example):
u16 g_pltt = PLTT_RED_MASK;
will put the variable g_pltt in the .data section which ends up in ROM. This means that you cannot change the variable. A bug that I took a while to track down. You need to define it has:
u16 g_pltt;
And then in your initialisation function, do:
g_pltt = PLTT_RED_MASK;
This will put g_pltt in the .bss section which maps onto WRAM which is writable. Also code like:
const u32 testvar = 42;
will put testvar in the .rdata section which maps on to ROM and that's what you want.
Anyone, I thought I'd share the solution to this obscure bug that I found.
On a default linker script (i.e. you don't create one yourself), the code (for example):
u16 g_pltt = PLTT_RED_MASK;
will put the variable g_pltt in the .data section which ends up in ROM. This means that you cannot change the variable. A bug that I took a while to track down. You need to define it has:
u16 g_pltt;
And then in your initialisation function, do:
g_pltt = PLTT_RED_MASK;
This will put g_pltt in the .bss section which maps onto WRAM which is writable. Also code like:
const u32 testvar = 42;
will put testvar in the .rdata section which maps on to ROM and that's what you want.
Anyone, I thought I'd share the solution to this obscure bug that I found.
It does but they don't seem up to date. The Heros demo that you can
download from www.warioworld.com seems to use different defines (for
example, EX_WRAM for external WRAM) which is specified in the dev-kit's
headers. This is because, when the dev-kit was done, external WRAM was not
available. Perhaps I have to wait until the new dev-kit.
Matt.
> -----Original Message-----
> From: Dave Murphy [mailto:davem@...]
> Sent: Tuesday, July 25, 2000 13:59
> To: gbadev@egroups.com
> Subject: RE: [gbadev] Latest AGB includes and libraries
>
>
> The gnu devkit stuff should have those in \include & \lib as
> does the Yoshi
> demo
>
> -----Original Message-----
> From: Matthew Davies [mailto:MDavies@...]
> Sent: Tuesday, July 25, 2000 11:08 AM
> To: AGB list (E-mail)
> Subject: [gbadev] Latest AGB includes and libraries
>
>
> Hi,
>
> Where can I get them? They are nowhere on www.warioworld.com
> <http://www.warioworld.com> . The simple game demo that you
> can dowload
> uses constant values (probably from the agb headers) that are
> undefined with
> the stuff that I have. I am therefore assuming that there are later
> versions. Can anyone shed some light on where I can get my
> hands on them?
>
> Regards,
>
> Matt J. Davies
> Programmer
> Acclaim Studios Ltd.
>
>
>
>
>
> _____
>
> <http://click.egroups.com/1/7145/0/_/_/_/964519211/>
>
> <http://adimg.egroups.com/img/7145/0/_/_/_/964519211/468x60new8.gif>
>
> _____
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
>
>
>
> --------------------------------------------------------------
> ----------
> Old school buds here:
> http://click.egroups.com/1/7081/0/_/_/_/964530174/
> --------------------------------------------------------------
> ----------
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
The gnu devkit stuff should have those in \include & \lib as does the Yoshi
demo
-----Original Message-----
From: Matthew Davies [mailto:MDavies@...]
Sent: Tuesday, July 25, 2000 11:08 AM
To: AGB list (E-mail)
Subject: [gbadev] Latest AGB includes and libraries
Hi,
Where can I get them? They are nowhere on www.warioworld.com
<http://www.warioworld.com> . The simple game demo that you can dowload
uses constant values (probably from the agb headers) that are undefined with
the stuff that I have. I am therefore assuming that there are later
versions. Can anyone shed some light on where I can get my hands on them?
Regards,
Matt J. Davies
Programmer
Acclaim Studios Ltd.
_____
<http://click.egroups.com/1/7145/0/_/_/_/964519211/>
<http://adimg.egroups.com/img/7145/0/_/_/_/964519211/468x60new8.gif>
_____
unsubscribe: gbadev-unsubscribe@egroups.com
-----Ursprüngliche Nachricht----- Von: Matthew Davies [mailto:MDavies@...] Gesendet: Dienstag, 25. Juli 2000 12:08 An: AGB list (E-mail) Betreff: [gbadev] Latest AGB includes and libraries
Hi,
Where can I get them? They are nowhere on www.warioworld.com. The simple game demo that you can dowload uses constant values (probably from the agb headers) that are undefined with the stuff that I have. I am therefore assuming that there are later versions. Can anyone shed some light on where I can get my hands on them?
Where can I get them? They are nowhere on www.warioworld.com. The simple game demo that you can dowload uses constant values (probably from the agb headers) that are undefined with the stuff that I have. I am therefore assuming that there are later versions. Can anyone shed some light on where I can get my hands on them?
Make sure you have the latest installs from the NOA site & the W2K patch
stuff
> -----Original Message-----
> From: Matthew Davies [mailto:MDavies@...]
> Sent: Monday, July 24, 2000 4:45 PM
> To: Gameboy People (E-mail); AGB list (E-mail)
> Subject: Install hardware...
>
>
> Hi,
>
> Has anyone managed to install the IS-CGB-EMULATOR drivers on
> Windows 2000?
> I keep getting a messagebox saying:
>
> The specified location does not contain information about
> your hardware
>
> And I point at the ISPD.INF file as well. Can anyone shed
> some light on
> this?
>
> Thanks in advance,
> Cheers!
>
> Matt J. Davies
> Programmer
> Acclaim Studios Ltd.
>
>
>
Hi,
Has anyone managed to install the IS-CGB-EMULATOR drivers on Windows 2000?
I keep getting a messagebox saying:
The specified location does not contain information about your hardware
And I point at the ISPD.INF file as well. Can anyone shed some light on
this?
Thanks in advance,
Cheers!
Matt J. Davies
Programmer
Acclaim Studios Ltd.
Hey, does anyone know if there is a specification on the rom registration
area in an AGB cart?
WD
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
Hi!
> DMA interrupts are useful for filling in the FIFO buffers for sound or any
> other code that needs to stream information, say, from external to internal
> RAM.
Sure, but it's only really useful when dma doesn't stop the CPU, isn't it...
> I have not found any information regarding DMA transfer speed but I wouldn't
> be surprised if it was keyed into the clock speed (16.78 MHz). The 4 DMAs
Yes, it's most likely in some way synchronized to the clock speed now it's
interesting how much data is transferred per cycle. But if it isn't in the
docs, i'll have to wait until i have a devkit to try it out...
> have different priorities, so one is interrupted when a higher priority is
> started.
Ah, ok, not as good as 4 dma channels, but still an interesting option...
> I cannot tell you either if the CPU stops during DMA transfer, but I hope
> not. The CGB DMA didn't halt the CPU did it? Doesn't the standard OAM
> transfer routine executes a minimum loop for 140 times while it waits for
> DMA to be over?
Ok, OAM DMA doesn't stop the CPU but GDMA and HDMA do. But i'm wondering
how else simple.bin might work as it does a few transfers of more than
1k without any waiting inbetween. On the other hand, you'll really want
interupts to occure during transfers, so it would be really bad to stop
the CPU during that time.
Hm...
--
exoticorn/icebird
Hi,
DMA interrupts are useful for filling in the FIFO buffers for sound or any
other code that needs to stream information, say, from external to internal
RAM.
I have not found any information regarding DMA transfer speed but I wouldn't
be surprised if it was keyed into the clock speed (16.78 MHz). The 4 DMAs
have different priorities, so one is interrupted when a higher priority is
started.
I cannot tell you either if the CPU stops during DMA transfer, but I hope
not. The CGB DMA didn't halt the CPU did it? Doesn't the standard OAM
transfer routine executes a minimum loop for 140 times while it waits for
DMA to be over?
Regards,
Matt.
> -----Original Message-----
> From: Dennis Ranke [mailto:exoticorn@...]
> Sent: Sunday, July 23, 2000 15:42
> To: gbadev@egroups.com
> Subject: [gbadev] A few questions regarding DMA...
>
>
> Hi evry1!
>
> I just took a look at the dma code in both the simple.bin and the
> isagbcad.com files. There, i have found that simple.bin writes three
> words to the dma regs while isagbcad.com writes 6 halfwords. I'm now
> wondering if there is any reason to do so. (Apart from using different
> types for the hw regs in the c source for no good reason...)
> Does anyone have any idea?
> Second thing that stroke me was that both programs don't wait for an
> end of the transfer before they start a new one. Does this mean that
> the processor is halted during dma transfer just as the cgb one?
> And if yes, why are there 4 different dmas and why are there inerupts
> associated with these dmas? Or is the transfer fast enough so that
> the programs don't need to wait for the end of it? I find this
> possibility rather unlikely, though...
>
> --
> exoticorn/icebird
>
> --------------------------------------------------------------
> ----------
> @Backup- Protect and Access your data any time, any where on the net.
> Try @Backup FREE and receive 300 points from mypoints.com Install now:
> http://click.egroups.com/1/6346/0/_/_/_/964356139/
> --------------------------------------------------------------
> ----------
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
Subject: [gbadev] A few questions regarding DMA...
Hi evry1!
I just took a look at the dma code in both the simple.bin and the isagbcad.com files. There, i have found that simple.bin writes three words to the dma regs while isagbcad.com writes 6 halfwords. I'm now wondering if there is any reason to do so. (Apart from using different types for the hw regs in the c source for no good reason...) Does anyone have any idea? Second thing that stroke me was that both programs don't wait for an end of the transfer before they start a new one. Does this mean that the processor is halted during dma transfer just as the cgb one? And if yes, why are there 4 different dmas and why are there inerupts associated with these dmas? Or is the transfer fast enough so that the programs don't need to wait for the end of it? I find this possibility rather unlikely, though...
Hi evry1!
I just took a look at the dma code in both the simple.bin and the
isagbcad.com files. There, i have found that simple.bin writes three
words to the dma regs while isagbcad.com writes 6 halfwords. I'm now
wondering if there is any reason to do so. (Apart from using different
types for the hw regs in the c source for no good reason...)
Does anyone have any idea?
Second thing that stroke me was that both programs don't wait for an
end of the transfer before they start a new one. Does this mean that
the processor is halted during dma transfer just as the cgb one?
And if yes, why are there 4 different dmas and why are there inerupts
associated with these dmas? Or is the transfer fast enough so that
the programs don't need to wait for the end of it? I find this
possibility rather unlikely, though...
--
exoticorn/icebird
I think there isn't a dump of the ROM BIOS in the official SDK.
-----Message d'origine----- De : Giovanni Bajo [mailto:bagio@...] Envoyé : vendredi 21 juillet 2000 17:30 À : gbadev@egroups.com Objet : RE: [gbadev] Cosine/sine tables
Is the ROM BIOS already dumped? Or is it provided with the official SDK?
I would really like to give it a look.
--- Giovanni Bajo Lead Programmer
Protonic Interactive www.protonic.net
a brand of Prograph Research S.r.l. www.prograph.it
-----Original Message----- From: Votava Christian [mailto:cvotava@...] Sent: Friday, July 21, 2000 5:12 PM To: 'gbadev@egroups.com' Subject: RE: [gbadev] Cosine/sine tables
Perhaps you can try to disassemble the ROM? if you success, I am very intersting by your results :)
-----Message d'origine----- De : Matthew Davies [mailto:MDavies@...] Envoyé : vendredi 21 juillet 2000 17:16 À : AGB list (E-mail) Objet : [gbadev] Cosine/sine tables
Hi,
To calculate what the rotation registers should contain, you need to find the cosine and sine of the angle of rotation. Infact, this is exactly what BGAffineSet() and OBJAffineSet() should do. Which brings me to the conclusion that there must be a consine and sine function in the ROM, or at least lookup tables. Couldn't we use them. Anyone know where they are? If not, I have a look myself.
so.... that would mean that unlike the GBC, we would have complete access to
the internal rom? That would mean we could write a quick program to copy the
rom to ram and pull it back onto a PC. =)
On Fri, 21 July 2000, Matthew Davies wrote:
>
> The 16 system functions are embedded in the 16K ROM that's built into the
> GBA. This includes BGAffineSet() and OBJAffineSet(). This is based on the
> latest information I have.
>
> Matt.
>
>
> > -----Original Message-----
> > From: Dave Murphy [mailto:davem@...]
> > Sent: Friday, July 21, 2000 16:14
> > To: gbadev@egroups.com
> > Subject: RE: [gbadev] Cosine/sine tables
> >
> >
> > Hmm, I may be wrong but I would imagine that those are
> > library functions you
> > link at compile time. The bootstrap ROM is unlikely to
> > contain anything more
> > than the startup logos & standard cart check before passing
> > control to the
> > gamepak.
> >
> > -----Original Message-----
> > From: Matthew Davies [mailto:MDavies@...]
> > Sent: Friday, July 21, 2000 4:16 PM
> > To: AGB list (E-mail)
> > Subject: [gbadev] Cosine/sine tables
> >
> >
> > Hi,
> >
> > To calculate what the rotation registers should contain, you
> > need to find
> > the cosine and sine of the angle of rotation. Infact, this
> > is exactly what
> > BGAffineSet() and OBJAffineSet() should do. Which brings me to the
> > conclusion that there must be a consine and sine function in
> > the ROM, or at
> > least lookup tables. Couldn't we use them. Anyone know
> > where they are? If
> > not, I have a look myself.
> >
> > Regards,
> >
> > Matt J. Davies
> > Programmer
> > Acclaim Studios Ltd.
> >
> >
> >
> >
> > _____
> >
> > <http://click.egroups.com/1/4325/0/_/_/_/964192123/>
> >
> <http://adimg.egroups.com/img/4325/0/_/_/_/964192123/pr_bike_468_12k.gif>
>
> _____
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
>
>
>
> ------------------------------------------------------------------------
> Shoes? On the web?
> Click Here!
> http://click.egroups.com/1/7061/0/_/_/_/964192646/
> ------------------------------------------------------------------------
>
> unsubscribe: gbadev-unsubscribe@egroups.com
>
>
> ------------------------------------------------------------------------
> @Backup- Protect and Access your data any time, any where on the net.
> Try @Backup FREE and receive 300 points from mypoints.com Install now:
> http://click.egroups.com/1/6346/0/_/_/_/964193417/
> ------------------------------------------------------------------------
>
> unsubscribe: gbadev-unsubscribe@egroups.com
-------------------------------------------------------------
Sign up for ICQmail at http://www.icq.com/icqmail/signup.html
Is the ROM BIOS already dumped? Or is it provided with the official SDK?
I would really like to give it a look.
--- Giovanni Bajo Lead Programmer
Protonic Interactive www.protonic.net
a brand of Prograph Research S.r.l. www.prograph.it
-----Original Message----- From: Votava Christian [mailto:cvotava@...] Sent: Friday, July 21, 2000 5:12 PM To: 'gbadev@egroups.com' Subject: RE: [gbadev] Cosine/sine tables
Perhaps you can try to disassemble the ROM? if you success, I am very intersting by your results :)
-----Message d'origine----- De : Matthew Davies [mailto:MDavies@...] Envoyé : vendredi 21 juillet 2000 17:16 À : AGB list (E-mail) Objet : [gbadev] Cosine/sine tables
Hi,
To calculate what the rotation registers should contain, you need to find the cosine and sine of the angle of rotation. Infact, this is exactly what BGAffineSet() and OBJAffineSet() should do. Which brings me to the conclusion that there must be a consine and sine function in the ROM, or at least lookup tables. Couldn't we use them. Anyone know where they are? If not, I have a look myself.