Re: A85: A boggling interrupt question! :)
[Prev][Next][Index][Thread]
Re: A85: A boggling interrupt question! :)
In a message dated 4/25/99 6:15:29 PM MDT, DorkReMi@aol.com writes:
> Hey, all... it's been a while since I've asked you something, so I'll make
up
>
> for it here. DON'T read this unless you want to be stuck here for a
while. :
> )
>
> OK. Here's the deal: In my game Final Fantasy 7: The Calling, I have what
I
> call an event queue, which is basically a line of events that is processed
> one by one, each after another. Well, I have an interrupt routine that
> serves something like a cyclic timer, e.g. the interrupt routine
decrements
> a
> value each time it is called, and when the value is zero, the interrupt
> routine inserts a timer event into the event queue. If you understood
that,
>
> then you can probably help now. :) OK. Here's the problem. I am running
> this program on the emulator one day, and I finally get it to work, but as
> soon as I try to do it on my calculator, the damned thing doesn't quite
work.
>
> Now I have to elaborate on THAT. :)
>
> OK. Here's exactly what I'm doing. In my game, each player has a "Time
Bar."
>
> When this bar fills up, that player gets an action, whatever the action
is.
>
> Then, after they take the action, the bar resets to zero, and it starts
> filling up again. OK. Well, the interrupt routine increments every
player'
> s
> Time Bar whenever it is called. Here's the interrupt routine:
>
> ;---Interrupt Routine for Battles---
> Battle_Interrupt:
> di
> PUSH HL
> PUSH AF
> PUSH BC
> PUSH DE
> LD HL, (C_Time_Bar_Timer) ;LD HL with Cloud's Time Bar
> DEC HL ;Inc it.
> LD (C_Time_Bar_Timer), HL ;put it back into holding space.
> LD A, H ;next two lines -- check to see if HL = 0
> CP L
> CALL Z, &C_Inc_Time ;it does, so reset C_Time_Bar_Timer and insert timer
> event.
> LD HL, (S_Time_Bar_Timer) ;Repeat for enemy, Sephiroth.
> DEC HL
> LD (S_Time_Bar_Timer), HL
> LD A, H
> CP L
> CALL Z, &S_Inc_Time
> POP DE
> POP BC
> POP AF
> POP HL
> ei
> RET
>
> You see, when the timers each reach zero, I make FLINE draw a line the
size
> of the player's Time Bar wide (in pixels) to show that the timer is
getting
> bigger. It works on the emulator, but not on the 85. Could it be that
the
> hardware on the 85 is slower? ::confused::
> The interrupt routine is run through fine, every time. I know it works.
And
>
> it knows when it should insert the event, but it doesn't do it on the
TI-85.
>
> It DOES on the emulator. I'm wondering if the interrupt is getting called
> too often for regular stuff to go on outside of it. Is that a
possibility?
>
> Did this make any sense? :P
>
> -Josh Morris
> dorkremi@hotmail.com
Hmmm...I *don't* think you need the di/ei instructions if you're using
Usgard's INT_INSTALL call...in fact, I'm sure you don't, because I've made a
grayscale routine without that! I can't say why it won't work on the regular
85 and yet will on the emulator (what emu are you using?), but try that, and
see if it works.
JL