Author Topic: PRIZM Emu  (Read 37880 times)

0 Members and 1 Guest are viewing this topic.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: PRIZM Emu
« Reply #15 on: December 31, 2010, 06:13:06 pm »
I still don't undertake why we need ti83plus.inc to make PRIZM emu...

/FACEPALM
Wow this subforum is growing fast
Anyway, does anyone know if Casio is planning to release an emulator?  Also, would it be possible to easily port games from TIs to the PRIZM?  There are just too many good games on ti just to let them go away.
And if ccasio isn't making an emu, how hard would it be to make a third party one?

We'd need something like ti83plus.inc to make one, do we have?

And then people say I'M THE ONE who doesnt read what people say...

The people who did that were warned for doing it rudely. It doesn't mean you have to do the same as them. Plus this is a very technical subject, which means less tech-savy people (like me) will most likely miss important information in posts, not to mention your post was not very clear (It appeared to ask if we may need the actual TI-83+ file).

As for an emulator, I do not know if we need the inc file necessarly. I know Casio is releasing a free trial software for early 2011. This might include an emu. However, given that the FX-9860G emu apparently doesn't support add-ins, I have doubts that Casio's proprietary emu will be that good.

It would be nice to see a community one, as long as it doesn't contain any copyrighted code.
« Last Edit: December 31, 2010, 06:15:49 pm by DJ Omnimaga »
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline jnesselr

  • King Graphmastur
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2270
  • Rating: +81/-20
  • TAO == epic
    • View Profile
Re: PRIZM Emu
« Reply #16 on: December 31, 2010, 06:36:14 pm »
Okay, we don't really need to know the hardware, per SE.

For a TI emulator, you don't need ti83plus.inc. It's very abstract in it's implementation. An emulator for TI calcs in essence emulates things like ports and such, not memory and bcalls.  The OS handles all bcalls and such on it's own with it's own code.  The code is gotten from a ti-calc based on a ROM.

For a prizm emulator, we need to know screen size, and low-level how it talks to it.  That means we need some sort of disassembly of the OS so we can analyze that stuff.

Offline Deep Toaster

  • So much to do, so much time, so little motivation
  • Administrator
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 8217
  • Rating: +758/-15
    • View Profile
    • ClrHome
Re: PRIZM Emu
« Reply #17 on: December 31, 2010, 11:44:53 pm »
What graph said: You almost never need an include file for emulating anything, since all the .inc file is is basically ASM source code that's imported into assembly programs (usually for equates). By the time you're emulating hardware, everything's already in pure data form anyway (you could call it hex), so you wouldn't need the text file for it. Basically, it's just ASM source used in assembling so coders don't have to type all the equates by hand, kinda like #include in C/C++ and prgm in Axe. Maybe you're thinking of ti83plus.rom (instead of .inc)?

That's for the kind of emulator we have to TI calcs, though, which only emulates the hardware and lets it read the OS like a real calc, like graph said. That's why you can have an emu with no OS. It's just like a calculator with no OS: hardware's there, but you can't do anything with it.

So if we were to make a Prizm emu, we'd have to know how its hardware works (ports, LCD, how it reads the OS and other stuff, keys, and everything else). Then to run it we'd need a ROM (or maybe just the OS, depending on how picky Casio is ;)), which you know.




Offline jnesselr

  • King Graphmastur
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2270
  • Rating: +81/-20
  • TAO == epic
    • View Profile
Re: PRIZM Emu
« Reply #18 on: January 01, 2011, 12:01:25 am »
I'm pretty sure we could run it with just the OS.  I don't know how picky Casio is with roms, but I'm sure it will be alright for personal use or something like this. Now, we need to be careful to see any signs of no-hacking policies. I don't like messing with stuff where it could be legally bad, and wouldn't write an emulator at all in that case.  Does anyone know of a disassembler for the SH3? Or at least an instruction set somewhere.

Offline z80man

  • Casio Traitor
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 977
  • Rating: +85/-3
    • View Profile
Re: PRIZM Emu
« Reply #19 on: January 04, 2011, 01:42:45 am »
Quote
author=graphmastur link=topic=5966.msg105395#msg105395 date=1293858085]
I'm pretty sure we could run it with just the OS.  I don't know how picky Casio is with roms, but I'm sure it will be alright for personal use or something like this. Now, we need to be careful to see any signs of no-hacking policies. I don't like messing with stuff where it could be legally bad, and wouldn't write an emulator at all in that case.  Does anyone know of a disassembler for the SH3? Or at least an instruction set somewhere.
I couldn't find any disassemblers that worked for the SH3, but there is a full documentation at http://documentation.renesas.com/eng/products/mpumcu/rej09b0317_sh_3sm.pdf using that I'm someone will write a disassembler tool allowing us to document ports, memory, and system calls. As for the rom it should be legal as long as you use one from your own calc.

List of stuff I need to do before September:
1. Finish the Emulator of the Casio Prizm (in active development)
2. Finish the the SH3 asm IDE/assembler/linker program (in active development)
3. Create a partial Java virtual machine  for the Prizm (not started)
4. Create Axe for the Prizm with an Axe legacy mode (in planning phase)
5. Develop a large set of C and asm libraries for the Prizm (some progress)
6. Create an emulator of the 83+ for the Prizm (not started)
7. Create a well polished game that showcases the ability of the Casio Prizm (not started)

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: PRIZM Emu
« Reply #20 on: February 12, 2011, 05:48:31 pm »
Necro, 'cause I never saw this...

Since the last posts, the situation has changed somewhat. Yes, there are multiple disassemblers available and the OS can be probably run without a ROM image. The hardware documentation is available in the previous post.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: PRIZM Emu
« Reply #21 on: February 12, 2011, 06:38:26 pm »
This is good :)
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline z80man

  • Casio Traitor
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 977
  • Rating: +85/-3
    • View Profile
Re: PRIZM Emu
« Reply #22 on: February 14, 2011, 01:46:25 am »
I have a feeling that pretty soon we will be capable of building a full Prizm emulator. Even though we haven't fully disassembled the OS yet and the ports are still unknown, an emulator can at least be started. The first thing that can be done is the SH3 emulation core. With this being already fully documented, emulating the instructions is possible and I was actually going to start writing the insructions soon too. This will be in Java for several reasons that I will explain later. Next thing to be emulated will have to be the memory. Now for Ti-83+ emulators you could just make a 64 kb array and call that memory (ignoring flash and ram pages at the moment). Now with a 32 bit proc this is a lot harder. So if anyone is good with writing memory management routines in java I could use some help. Then there is also the flash to be emulated which I believe could just be stored in a file and then accsessed from there. I'm not yet sure if the flash is set up in pages or if it just addresed similar to the ram.

In other hardware the keyboard shouldn't be that hard and the screen will be easy once we find where it is mapped to. usb could be hard to work with, but that shouldn't be nessecary in the initial version of the software. There is also the serial port, but it acts diffrently than the 83+ one because it has input and output buffers. The last hardware I can think of is the clock and that should not be hard to emulate either.

Now I want to go over some project details. Even though I'm mainly a C++ programmer, I wanted to do this in java, one because of portability. Two because my idea was to make each of the hardware devices its own thread so they can operate simultaneously. (this feature being very easy to implement in java) I also wanted to add full debugging software just like in wabbit. This project is also quite ambitious so I will need lots of help from everyone. Once I get started on this I will post updates and also send out help requests. For the past few weeks I have been very busy (especially because I have a job now), but I will have more free time in the near future. Lastly my current priority is to get that app signer out, to make Prizm programming much easier. It's just been I've just been very busy as I previously stated.

List of stuff I need to do before September:
1. Finish the Emulator of the Casio Prizm (in active development)
2. Finish the the SH3 asm IDE/assembler/linker program (in active development)
3. Create a partial Java virtual machine  for the Prizm (not started)
4. Create Axe for the Prizm with an Axe legacy mode (in planning phase)
5. Develop a large set of C and asm libraries for the Prizm (some progress)
6. Create an emulator of the 83+ for the Prizm (not started)
7. Create a well polished game that showcases the ability of the Casio Prizm (not started)

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: PRIZM Emu
« Reply #23 on: February 14, 2011, 01:53:36 am »
I can help if you need conceptual level help with any of the hardware processes or opcodes. I'm still working on all of the I/O, excluding keyboard (which I'm not even going to touch until I can at least use the screen), so that might be a bit too ambitious to emulate. But the CPU core is definitely possible. Just be careful with the arithmetic instructions and read the instruction descriptions. Some of them have very important but slightly subtle effects.

On a side note, the Renesas documentation has C code for all of the instructions, so that might be easier in C rather than Java.
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline z80man

  • Casio Traitor
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 977
  • Rating: +85/-3
    • View Profile
Re: PRIZM Emu
« Reply #24 on: February 14, 2011, 01:56:24 am »
I can help if you need conceptual level help with any of the hardware processes or opcodes. I'm still working on all of the I/O, excluding keyboard (which I'm not even going to touch until I can at least use the screen), so that might be a bit too ambitious to emulate. But the CPU core is definitely possible. Just be careful with the arithmetic instructions and read the instruction descriptions. Some of them have very important but slightly subtle effects.

On a side note, the Renesas documentation has C code for all of the instructions, so that might be easier in C rather than Java.
Or I could just port the C codes to java

List of stuff I need to do before September:
1. Finish the Emulator of the Casio Prizm (in active development)
2. Finish the the SH3 asm IDE/assembler/linker program (in active development)
3. Create a partial Java virtual machine  for the Prizm (not started)
4. Create Axe for the Prizm with an Axe legacy mode (in planning phase)
5. Develop a large set of C and asm libraries for the Prizm (some progress)
6. Create an emulator of the 83+ for the Prizm (not started)
7. Create a well polished game that showcases the ability of the Casio Prizm (not started)

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: PRIZM Emu
« Reply #25 on: February 14, 2011, 01:56:40 am »
Or that  ;)
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline z80man

  • Casio Traitor
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 977
  • Rating: +85/-3
    • View Profile
Re: PRIZM Emu
« Reply #26 on: February 14, 2011, 02:15:07 am »
Well I already figured out a memory model which a will give a brief description of. How it will work is when an instruction is passed for a memory location, the emulator then converts the physical adress into a virtual one which can be stored into a dynamic array. So in order of execution, a program on the Prizm passes a virtual address to the OS, which then converts that into a physical address, then the emulator converts that into a virtual adress, then the jre converts that into a different virtual address, and then converts that into a physical address. Wow this makes my head hurt.  :w00t:

List of stuff I need to do before September:
1. Finish the Emulator of the Casio Prizm (in active development)
2. Finish the the SH3 asm IDE/assembler/linker program (in active development)
3. Create a partial Java virtual machine  for the Prizm (not started)
4. Create Axe for the Prizm with an Axe legacy mode (in planning phase)
5. Develop a large set of C and asm libraries for the Prizm (some progress)
6. Create an emulator of the 83+ for the Prizm (not started)
7. Create a well polished game that showcases the ability of the Casio Prizm (not started)

Offline AngelFish

  • Is this my custom title?
  • Administrator
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3242
  • Rating: +270/-27
  • I'm a Fishbot
    • View Profile
Re: PRIZM Emu
« Reply #27 on: February 14, 2011, 02:17:17 am »
lol, Aren't abstraction layers fun?
∂²Ψ    -(2m(V(x)-E)Ψ
---  = -------------
∂x²        ℏ²Ψ

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: PRIZM Emu
« Reply #28 on: February 14, 2011, 02:57:52 am »
I'm glad to hear an emu might be eventually doable. Good luck to whoever starts working on this.
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Kristaba

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 16
  • Rating: +5/-0
    • View Profile
Re: PRIZM Emu
« Reply #29 on: February 14, 2011, 02:52:56 pm »
Hey guys >B)
I already thought to a fx9860 emulator some years ago (I never realized it, but I have some ideas).

Briefly, the SH3 isn't a Z80 : it's a recent RISC processor, with MMU, privileged mode, etc...
So the better idea to simulate the processor is, I think, to write a C program that work exactly as the hardware processor (abstract implementation of the hardware). It seems pretty complicated and outsized for this task, but I think it's the better idea to get a reliable base for a complete emulator, and the recent computer processor are enough powerful to run this without any problem.
If this base is chosen, the rest of task to get a worked emulator is to write the software description of the rests of hardware components (RAM, ROM, Screen, keypad, and probably some stuff).

I know a open-source video games emulator, MAME, use this kind of implementation and work well, so it isn't *ONLY* a stupid idea from a Casio programmer :love: