Its always great to hear we;ve brought another one to the dark side. 😉
As for the lens, when it broke did it actually break into smaller pieces? If so, you can probably tilt the VB and shake them out, as you would anything thats fallen inside anything else.
If its not that small, you should still be able to get it out. After all, you got it in there.
…A question though: with the column headings, the first column (‘C’ for games and ‘I’ for hardware), stand for the items themselves, correct?
At first I thought the ‘C’ stood for (plastic dust) cover, but just realised the hardware had ‘I’ instead.
jorgeche: I haven’t touched gccVB in ages, and since then its gone an overhaul, so the following may not work right.
This is the timing code from my Zelda demo. I just tested the ROM in the latest (at least I think it is) copy of Reality Boy, and it seems to be running at the correct speed.
I actually used the ROM timer interrupt to increment a counter that I could then use to calculate the time. I’m not sure of the duration of the timer, but I think I have it set to 10x100uS (1mS).
// Timer Interrupt Handler
// Create a timed delay
void INTTIM()
{
asm("
di /* Disable interrupts */
add -4, r3 /* Increment sp by register size */
st.w r2, 0 [r3] /* Store the contents of r2 in sp */
movhi 0x0500, r0, r1 /* Put address of timer val in r1 */
movea 0x0008, r1, r1 /* */
ld.w 0 [r1], r2 /* Load timer value into r2 */
add 1, r2 /* Increment timer value by 1 */
st.w r2, 0 [r1] /* Store timer value back in ram */
ld.w 0 [r3], r2 /* Retrieve previous r2 from sp */
add 4, r3 /* Set sp back to previous value */
ld.w 0 [r3], r1 /* Retrieve previous r1 from sp */
add 4, r3 /* Set sp back to previous value */
ei /* Re-enable interrrupts */
reti /* Return from interrupt */
");
return;
}
// Timer Initialisation
// Create a timed delay
void InitTimer()
{
HW_REGS[THR] = 0x00; // THR, timer duration value high byte
HW_REGS[TLR] = 0x09; // TLR, timer duration value low byte
HW_REGS[TCR] = HW_REGS[TCR] & ~TIMER_20US; // T-Clk-Sel = 0, 100uS delay
HW_REGS[TCR] = HW_REGS[TCR] | TIMER_INT; // Tim-Z-Int = 1, enable interrupt
HW_REGS[TCR] = HW_REGS[TCR] | TIMER_ENB; // T-Enb = 1, turn on timer
return;
}
Hope this is some help. I haven’t touched this since the early days (it was made just after the timer was figured out IIRC), so it probably doesn’t work anymore.
Over time the glue holding the display cables to the board seems to separate.
DogP is offering a service to reglue the cables. There should be some threads about it somewhere on this forum.
Not with the background image, but with the whole red screen thing (not that I don’t like it ;-)).
During the daytime I have to select the text to be able to see it.