|
|
[Page
Last Modified: 17 Jan 2005]
Sound
Player Plug-in For Pogoshell Now in .MBZ Format
This
60K plug-in is the compressed multiboot version of
the Sound Player described further down the page.
Installation instructions are in the enclosed readme
file. Get
it here
|
A
JPEG Viewer Plug-in For Pogoshell
Another
New Version
This
new release comes in two alternative versions:
pjpeg092.bin non-compressed, and pjpeg092.mbz
compressed. Both are actually multiboot programs
and run from EWRAM, although this is invisible
to the user. The .mbz version takes up less
cart space and has other space-saving virtues.
This version is now power-saving!
and the source code is available.
|
This
is a replacement JPEG viewer plug-in for Pogoshell.
The original, distributed with Pogoshell has some
distinct problems. It certainly doesn't correctly
display any of the JPEGs I've tried with it. The
two obvious problems I noticed are:
- If
the JPEG contains a thumbnail, the thumbnail is
displayed instead of the correct picture
- If
the Restart Intervals are not as the decoder expects
the picture is badly corrupted.
The
new viewer deals with these problems successfully.
It is slightly larger than the original one.
Many
thanks go to Burton Radons for placing his jpeg code
in the public domain.
Installation instructions are in the enclosed readme
file. Get
it here
A
Sound Player Plug-in For Pogoshell
This
combines the twp plug-ins below and effectively replaces
them. It is the same size as the MIDI file plug-in.
Installation instructions are in the enclosed readme
file. Get
it here
A
.WAV File Plug-in For Pogoshell
Introduction
Pogoshell
is a excellent front-end program for the Gameboy
Advance. It was drawn to my attention by a user
of Book Reader who requested an exit function to
return to Pogoshell. (Book Reader has this function
from V4.5 - press Start + Select together).
Pogoshell is a very attractive functional environment,
which manages 'saves' intelligently. I was planning
to provide links to its web site here but the author
unfortunately didn't reply to my email.
For
the sake of completeness rather than as a technical
breakthrough, I have written a .wav file plug-in
for Pogoshell.
This
plug-in for Pogoshell is based on code intended
for use in Book Reader. It may be downloaded and
used freely. I would suggest retaining the file
name as I plan improved versions and the file name
is the only way to know which version you have.
Capabilities
Use
it for pretending that your GBA has an MP3-like
music playback capability. Of course, the size of
the files is the problem.
The files currently have to be PCM, 1 or 2 channel
(mono or stereo). They can be any number of bits
per sample up to 16. They can be at any bit rate.
To reduce the size of your file to a sensible level
use an application such as Goldwave to convert your
wav file to 8 bit mono, with a sampling rate of
18157 bits per second. This gives a smaller file
size optimised for the playback sampling rate.
From
V0.91 the file may also be encoded as Microsoft
ADPCM, (mono only and no higher than 22050 Hz, or
it will not be played). In my opinion this format
is not very successful, though it does result in
smaller files. At 11025 Hz you can fit a whole album
onto a cartridge.
V0.91
also has a volume increase over the previous version.
V0.92
has a bug fix to stop crackles etc. caused by leaving
unused interrupts on. Thanks to weaaddar and Horscht
for helpful reports.
|
Installation
in Pogoshell
- Place
the pwav091.bin file in your Pogoshell
.plugins folder.
- Create
a folder for your WAV files and put some *.wav
files into it. Well maybe just one till you
see how big they are...
- Edit
the file filetypes in the .shell
folder by adding the line shown in red below
(all one line - even if shown wrapped
below)
|
5
txt 4 TXT
diz 4 TXT
nfo 4 TXT
cfg 4 TXT
sav 12 SAV
set 11 SET
mod 3 /.plugins/modplay.bin Playing music,
press START to quit
cw 3 /.plugins/modplay.bin Playing music,
press START to quit
cwz 3 /.plugins/modplay.bin Playing music,
press START to quit
mdz 3 /.plugins/modplay.bin Playing music,
press START to quit
k3m 3 /.plugins/krawall.bin Playing music,
press START to quit
wav 3 /.plugins/pwav091.bin
Playing wav file, press B to quit
nes 1
zcode 1 /.plugins/frotz.bin
gba 1 EXE
bin 2 EXE
nsf 3 /.plugins/nsf.bin Playing NES music,
press START to quit
mb 2 MB
bmp 6
font 7 FNT
|
|
- Create
your ROM in the usual way...
|
|
A
MIDI Plug-in For Pogoshell

Introduction
This
plug-in for Pogoshell is based on the code used
in Book Reader. It may be downloaded and used freely.
I would suggest retaining the file name as I plan
improved versions and the file name is the only
way to know which version you have.
Capabilities
The
MIDI capabilities are as follows:
|
How
the MIDI file is played
Unlike
the version in Book Reader this player works
with MIDI files as they are found, with no
re-processing. This means more work at the
time they are played as the midi clock has
to be reconciled with the asynchronous frame
rate.
The
approach here was to check once per frame
(about 1/60 sec) how many midi clocks had
passed (keeping track of the fractional midi
clocks) and checking the file for events for
each midi clock. This has the effect of moving
all events to the nearest tick of the frame
rate clock. This does not appear to be noticable.
Events in the MIDI file cause 'Note On' and
'Note Off' commands. These cause changes to
an 8 voice wide array of currently playing
notes (or percussion sounds). If a note is
to be started, the array is searched for an
unused voice. If none is found then the oldest
playing note is stopped to make room.
The
mixer uses this array to determine which samples
to mix for the current frame. Two 304 byte
buffers are used for the mixer to write to
on a given frame, and another two are simultaneously
being transferred to the sound FIFOs using
DMA at 18157Hz. Each buffer has 4 voices mixed
into it. The output of the 2 FIFOs is mixed
into both left and right channel to produce
a mono sound output.
This
approach allows more accurate sound samples
than if 8 voices were mixed into the one buffer.
The original samples have to be restricted
in amplitude so that adding several channels
together does not cause the sum to exceed
the available range. The more channels mixed
together, the lower the permissible amplitude
of each channel and the more distortion (digital
noise) which will be produced.
The
mixer is written in C, so is not particularly
fast. It is completely sufficient for the
current application. I may optimise it in
assembler for something to do in the future.
Other
MIDI commands which are currently processed
are Set Channel Volume, and Set Tempo.
Limitations
- The
available sound samples currently include
Organ, Harpsichord, Strings, Trumpet, 2
drum sounds and a cymbal sound.
- The
relative sample volumes are not very consistent.
- Note
endings after release are abrupt
cutoffs, rather than proper release fading
(although the normal decay during a sounding
[e.g. piano] note is handled properly).
- The
strings have too long an attack time, so
on some pieces the strings sound like they're
being played backwards.
- The
organ sample chosen was very compact, but
has too little harmonic content. The result
is that low frequency notes, played through
the Gameboy Advance 'speaker' sound more
like distortion than musical notes.
- Percussion
channel is assumed to be 10 - no attempt
is made to sense the channel or allow the
user to change it in this version.
Release
V0.9
Changes
to this version
- Samples
have been improved using a new app which
specifies the samples and combines them
at the click of a mouse. This makes trying
a small change to a sample much faster.
- Samples
used are Piano, Harpsichord, Sax, Church
Organ, Steel Guitar, Distortion Guitar,
Flute, Marimba, Trumpet, Violin, String
Ensemble, Drum, Bass Drum, High Hat
- Full
envelope control is now available though
not much used.
- Bug
fixes prevent failure caused by 'Polyphonic
Key Pressure', 'Channel Pressure', 'Pitch
Bend' and 'System Exclusive' messages. (Now
doesn't fall over playing the example files
I was sent. Don't get me wrong; I still
don't handle these messages, I just ignore
them correctly!)
- Fine
tuned the frequencies in the loop sections.
Release
V0.91
Changes
to this version
- Added
a further Electric Organ sample as the Church
Organ didn't work with Rock.
- Implemented
'Pitch Bend' which gives big improvement
on midi files which use it
|
|
Installation
in Pogoshell
- Place
the midi091.bin file in your Pogoshell
.plugins folder.
- Create
a folder for your MIDI files and put some
*.mid files into it.
- Edit
the file filetypes in the .shell
folder by adding the line shown in red below
(all one line - even if shown wrapped
below)
|
5
txt 4 TXT
diz 4 TXT
nfo 4 TXT
cfg 4 TXT
sav 12 SAV
set 11 SET
mod 3 /.plugins/modplay.bin Playing
music, press START to quit
cw 3 /.plugins/modplay.bin Playing music,
press START to quit
cwz 3 /.plugins/modplay.bin Playing
music, press START to quit
mdz 3 /.plugins/modplay.bin Playing
music, press START to quit
k3m 3 /.plugins/krawall.bin Playing
music, press START to quit
mid 3 /.plugins/midi091.bin
Playing music, press START to quit
nes 1
zcode 1 /.plugins/frotz.bin
gba 1 EXE
bin 2 EXE
nsf 3 /.plugins/nsf.bin Playing NES
music, press START to quit
mb 2 MB
bmp 6
font 7 FNT
|
|
- I
also took the opportunity to fix that
annoying spelling mistake in texts
in the .shell folder
|
|
.....
Hide known extensions
.....
|
|
- Create
your ROM in the usual way...
|
Address for comments, etc:
pc@bookreader.co.uk
Pogoshell
Links
I plan to
put a set of links to the main Pogoshell sites here...
|
|
|
|
|
|