Page 3 of 106 FirstFirst 123451353103 ... LastLast
Results 21 to 30 of 1055

Thread: Chip 8

  1. #21
    PCSX2 Coder refraction's Avatar
    Join Date
    Apr 2004
    Location
    Sheffield, UK
    Posts
    459
    Mentioned
    0 Post(s)
    Quote Originally Posted by Doomulation
    *Cough*
    Ascii output, huh? There just isn't enough space to output using cout or such functions.

    actually its very possible, its just quite slow, as you can see from the screenshots from my emu HERE

    this document is the only one you need, ive added a couple of comments in case of confusion on some of the op codes.



    Chip8 Documentation

  2. #22
    EmuTalk Member
    Join Date
    Nov 2003
    Location
    ~/
    Posts
    37
    Mentioned
    0 Post(s)
    Quote Originally Posted by Doomulation
    No of course it isn't hard. Nothing is hard once you learn it, but in the beginning it might be. What other ways?
    Puting the rom in a long char array


    Quote Originally Posted by Doomulation
    Ascii output, huh? There just isn't enough space to output using cout or such functions. Besides that, on more complex emulators (even gameboy) it is a MUST to learn this. Ascii won't do. Sound *IS* necessary, although not that much in chip8.
    Its just chip-8, sound can be a beep beep, not emulating the sound will of course make the emulator limited but will not make you unable to emulate chip-8

    Quote Originally Posted by Doomulation
    Just putting in random input is cheating and you won't learn anything from it.
    You learn the instruction and will implement the imput instruction, just from another way

    Quote Originally Posted by Doomulation
    You need to get the emulator working to get an understanding on how the real emulators work, to trace DOWN BUGS, etc etc. No, you need to learn it a little more than just get it working actually...
    A simple and incomplete emulator don't need to have bugs, but can make the one who does learn the basics of an emulator



    @refraction: nice

  3. #23
    ????????????????????????? Doomulation's Avatar
    Join Date
    Nov 2001
    Location
    ????????????????
    Posts
    8,776
    Mentioned
    0 Post(s)
    Quote Originally Posted by Villela
    Puting the rom in a long char array
    Each instruction is two byte. Do you want to put it in a WORD array? If you do, what if the gfx data is no even-addressed? You need bifts, bytes & shifting anyhow you do it.

    Its just chip-8, sound can be a beep beep, not emulating the sound will of course make the emulator limited but will not make you unable to emulate chip-8
    I agree somewhat with you there. Chip8 only has a beep sound, but still, it would be a good thing to emulate the sound opcodes.

    You learn the instruction and will implement the imput instruction, just from another way
    I mean, you won't learn how to do real input

    A simple and incomplete emulator don't need to have bugs, but can make the one who does learn the basics of an emulator
    Well, then you miss out essential parts needed for experience of a more advanced emulator, see?
    Atashi wa juu-yon-sai no onna no ko! Atashi no namae wa Miizuki. Yurushiku ne!
    Nani? Atashi o shinjirimasen desu ka? Baka!
    "You're all doomed! Doomed, I say! Hehe... are we approaching the end of the world?"

    shikata ga kaite aru - "the instructions are written above"
    Need to download GoodN64 or instructions to use it? Need to check if it's a good or bad rom?
    Download: Glide64 | Hacktarux's wrapper

  4. #24
    EmuTalk Member
    Join Date
    Nov 2003
    Location
    ~/
    Posts
    37
    Mentioned
    0 Post(s)
    the long char array: convert it, when reading you do an array like: long char rom[] = "00E0621A...." i don't know how can be do it in C or C++ but i believe it can

    the soud: yes it will be nice to emulate all, put a beep beep message in ascii

    input: will not learn to make an input but will learn how to emulate the chip8 input


    What i'm saying is that someone don't need to do a chip emu to play or to the others play, and if find problems or things that don't know how to do can do an alternative way, if someday the one learns how to make an imput and grafics in other output he can go there and emulate correct, but isn't the way you do the things, what matter is doing the emulator and learn

  5. #25
    ????????????????????????? Doomulation's Avatar
    Join Date
    Nov 2001
    Location
    ????????????????
    Posts
    8,776
    Mentioned
    0 Post(s)
    How do you suppose to convert it, then?
    int smthing = (int)memory[i]; // Will convert only that char
    int smthing = (int)(memory[i] + memory[i+1]); // Wonder if it does work?

    Besides, there are instructions that wants you to shift bits in strings. Although this can be done with division or multiplication, it's much more expensive in time rather than shift.

    About input...you know, knowing how to use & recieve input is all part of the training...it's not something you really want to be without. It can be used for many things, in many applications.

    Of course you can do things an alternate way, that's how emulators work. They don't do it exactly like the consoles does, they do it an "alternate" way, which achieves the same result.
    Say, if there's a bug that causes some games to go weird, what do you do to fix it?

    All these parts are essential to making a more advanced emulator. If you can't find the simplest bugs, then probably no game at all will boot in any emulator you make. And that's no experience since you don't get it right...
    Atashi wa juu-yon-sai no onna no ko! Atashi no namae wa Miizuki. Yurushiku ne!
    Nani? Atashi o shinjirimasen desu ka? Baka!
    "You're all doomed! Doomed, I say! Hehe... are we approaching the end of the world?"

    shikata ga kaite aru - "the instructions are written above"
    Need to download GoodN64 or instructions to use it? Need to check if it's a good or bad rom?
    Download: Glide64 | Hacktarux's wrapper

  6. #26
    Emutalk Member euphoria's Avatar
    Join Date
    Jan 2002
    Location
    60 10' N 24 57' E
    Posts
    308
    Mentioned
    0 Post(s)
    Quote Originally Posted by Doomulation
    How do you suppose to convert it, then?
    int smthing = (int)memory[i]; // Will convert only that char
    int smthing = (int)(memory[i] + memory[i+1]); // Wonder if it does work?
    int wSmthing = *(int *)&chMem[i]; // makes integer out of char-array element
    long dwSmthing = *(long *)&chMem[i]; // makes long integer out of char-array element

    There are other ways ofcourse, this was just an example.

  7. #27
    ????????????????????????? Doomulation's Avatar
    Join Date
    Nov 2001
    Location
    ????????????????
    Posts
    8,776
    Mentioned
    0 Post(s)
    Right, didn't think of that. I have used that method once, though.
    I suppose it can be done without shifting in chip8, but for other things, such as wonderswan (oh, I've seen it), it's pretty damn hard without shifting and logic understanding.
    Atashi wa juu-yon-sai no onna no ko! Atashi no namae wa Miizuki. Yurushiku ne!
    Nani? Atashi o shinjirimasen desu ka? Baka!
    "You're all doomed! Doomed, I say! Hehe... are we approaching the end of the world?"

    shikata ga kaite aru - "the instructions are written above"
    Need to download GoodN64 or instructions to use it? Need to check if it's a good or bad rom?
    Download: Glide64 | Hacktarux's wrapper

  8. #28
    Emulator Developer
    Join Date
    Apr 2003
    Posts
    248
    Mentioned
    0 Post(s)
    euphoria's method depends on the endian-ness of your processor though. On x86 (little endian) the low byte comes first, on PowerPC and many others the high byte comes first.

    BTW, I don't understand why people are making such a big deal of nextgen emulators. In fact, I went from Chip8 to Gameboy to nextgen. Granted, I do have a lot of other coding experience but if you understand the concepts, the only difference about nextgen emulation compared to emulating older systems are the immense speeds of the newer CPU:s and the complexity of some systems. The Gamecube is actually one of the "simplest" consoles above 8 bits to ever come out. The real challenge with the Gamecube lies in the insane CPU requirements of emulating the 485MHz PowerPC at full speed, and reverse engineering the graphics chip (it's pretty damn complex but nothing I can't handle, in theory at least ) . And of course the sound has to be HLE:d since the DSP is completely unknown.

  9. #29
    Emutalk Member euphoria's Avatar
    Join Date
    Jan 2002
    Location
    60 10' N 24 57' E
    Posts
    308
    Mentioned
    0 Post(s)
    Quote Originally Posted by ector
    euphoria's method depends on the endian-ness of your processor though. On x86 (little endian) the low byte comes first, on PowerPC and many others the high byte comes first.

    BTW, I don't understand why people are making such a big deal of nextgen emulators. In fact, I went from Chip8 to Gameboy to nextgen. Granted, I do have a lot of other coding experience but if you understand the concepts, the only difference about nextgen emulation compared to emulating older systems are the immense speeds of the newer CPU:s and the complexity of some systems. The Gamecube is actually one of the "simplest" consoles above 8 bits to ever come out. The real challenge with the Gamecube lies in the insane CPU requirements of emulating the 485MHz PowerPC at full speed, and reverse engineering the graphics chip (it's pretty damn complex but nothing I can't handle, in theory at least ) . And of course the sound has to be HLE:d since the DSP is completely unknown.
    This must be nothing new to you ector but to others interested (if any?) the endianess situation can be solved like this:

    int wSmthing = *(int *)&chMem[i ^ a];
    long dwSmthing = *(long *)&chMem[i ^ a];
    where a is a number that corresponds to what we want to XOR.

    The XOR binary operator turns the wanted lower bits to what we want when accessing byte-swapped (^1) or word-swapped (^3) or byte&word-swapped (^2)

    Example: we have address 0x0000 which is byte&word-swapped. We want to access its first byte (which is in address 2) we apply 0x0000 ^ 2 = 0x0002,
    second byte 0x0001 ^ 2 = 0x0003,
    third byte 0x0002 ^ 2 = 0x0000,
    fourth byte 0x0003 ^ 2 = 0x0001.

    If you play with it for a while it comes apparent to you how this works.

  10. #30
    ????????????????????????? Doomulation's Avatar
    Join Date
    Nov 2001
    Location
    ????????????????
    Posts
    8,776
    Mentioned
    0 Post(s)
    Errr, I don't think I get what that means. I think I'll just stick with shifting; much easier imo.
    Atashi wa juu-yon-sai no onna no ko! Atashi no namae wa Miizuki. Yurushiku ne!
    Nani? Atashi o shinjirimasen desu ka? Baka!
    "You're all doomed! Doomed, I say! Hehe... are we approaching the end of the world?"

    shikata ga kaite aru - "the instructions are written above"
    Need to download GoodN64 or instructions to use it? Need to check if it's a good or bad rom?
    Download: Glide64 | Hacktarux's wrapper

Page 3 of 106 FirstFirst 123451353103 ... LastLast

Similar Threads

  1. Nintendo DS specifications leaked
    By Gorxon in forum Gaming
    Replies: 37
    Last Post: June 25th, 2004, 22:16
  2. C&T 69000 video chip
    By Knuckles in forum TechTalk
    Replies: 4
    Last Post: June 16th, 2003, 00:43
  3. Rice's Daedalus 5.0.0 source code
    By Rice in forum 1964
    Replies: 19
    Last Post: June 15th, 2003, 09:39
  4. Replies: 18
    Last Post: December 7th, 2002, 10:59

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •