I'm trying to get a pretty screen recording of my new game, Wings of War, so I can upload a clip of it on YouTube. I've tried Wabbitemu and jsTIfied, but they both give odd display glitches.

I've tried this both with ROM I downloaded from the internet and also with ROM I dumped myself.

Here's a clip from Wabbitemu:

https://imgur.com/FrYCVNo

Here's a clip from jsTIfied:

https://imgur.com/IK7QoeR

Yes, I have tested my program on a real, physical calculator (TI-84 Plus, make P-0510N), and it works fine.

And yes, I can simply record my physical calculator for the YouTube video, but I want the video to look better.
It's not just the emulators.



[EDIT] ran fine on my 84+, but RAM cleared after exiting. That's probably my fault.
And yet it seems to work fine on mine, as far as I can tell.

https://imgur.com/hxmIWKX
I made a simple test program to try to pick out differences in how the displays work on an actual calculator vs. jsTIfied vs. Wabbitemu. Here's my code:


Code:

  LD A,$20
  OUT ($10),A ;set the column
  LD E,A
  XOR A
  LD C,12
colLoop:
  PUSH AF ;I now realize I should have used LD A,D here
  LD A,$80
  OUT ($10),A ;set the row; this is in the loop for testing purposes, as it means this program doesn't rely ;on how the driver wraps back to the top of the screen, which is what I originally thought was the issue
  POP AF
  LD B,64
dispCol:
  OUT ($11),A
  INC A ;alter what's being displayed so as to easily differentiate where the data are in each different ;picture
  DJNZ dispCol
  LD D,A ;save off A
  INC E ;inc down the screen along the column
  LD A,E
  OUT ($10),A
  LD A,D
  DEC C
  JR NZ,colLoop
  BCALL WaitEnterKey ;just for screenshotting purposes
  RET



Actual calculator screen:


jsTIfied:


Wabbitemu:


I feel like I've probably done something very stupid here (like maybe I should be calling _LCD_BUSY_QUICK?), but at the same time, I'd expect these to look the same.
Is there a reason why you aren't using a standard 15MHz compatible fastcopy routine?

Quickly looking it doesn't appear that you have enough of a delay between port writes.

EDIT - A second look and I don't see how that code could possibly work - there is an infinite loop for starters? (setting b inside a djnz loop) Is there a chance you pasted the incorrect snippet?

I haven't tested the below but it should do the trick (I think ... Smile). _LCD_BUSY_QUICK is at $000B. Just call it after every port write to be safe for now. If you plan on doing any logic in your fastcopy routine then you can tweak it so you can remove the busy call.


Code:
  LD A,$20
  OUT ($10),A
  CALL $000B
  LD E,A
  LD C,12
colLoop:
  LD A,$80
  OUT ($10),A
  CALL $000B
  XOR A
  LD B,64
dispCol:
  OUT ($11),A
  INC A
  CALL $000B
  DJNZ dispCol
  INC E
  LD A,E
  OUT ($10),A
  CALL $000B
  DEC C
  JR NZ,colLoop
My bad. I wrote the routine in hexadecimal first, then decompiled it by hand at 3 am, so I was too tired to notice the infinite loop in the reproduced code. I fixed it in the other post.

I'm not using a standard fast copy routine because the draw routine I use in my game draws compressed screens to save space.
Aha. Ok. That worked. Thank you.

jsTIfied:

  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement