Jump to content

Jam3s

Members
  • Content Count

    12
  • Joined

  • Last visited

Posts posted by Jam3s


  1. I have a few questions regarding memory bankswitching for the Atari 2600.

     

    1. Is bankswitching triggered off by reading as well as writing to certain locations?

    2. I have noticed many differents kinds of bankswitching (4K/2K/1K etc.). Are all of these available to all cartridges? I mean, could I use 4K ($FFF4-$FFFB) and 2K ($FFE0-$FFE7) bankswitching for the same cartridge?

    3. What happens if I try to switch to a bank that does not exist? (i.e. attempting to load bank 5 when there are only 4 banks on the cartridge)

    4. What is the initial bank to be loaded on powerup? Is it random, or always bank 0?

    5. I have read that some games require a certain bank to be loaded first (like bank 3), and that some games use additional RAM. Without a header for us to detect these games, how do we know when to emulate them? Do we have to use a database? I know that most games just fill the RAM areas with 00's or FF's but not all do.


  2. Yes I am writing an emulator. I have already written a NES one, so I know enough about emulators.

     

    I still can't get it to work. Whenever I just do a quick work-around and set the DirectDraw pointer to 0 whenever VBLANK is switched off, I still get the same effect. Could it be the timer, which I have emulated, causing this?


  3. I am having trouble with my emulator. I cannot stop the screen from scrolling vertically like a game that does not set the VSYNC/VBLANK flags properly.

     

    Am I right to assume the following?

     

    1. VSYNC must first be set, wait at least two scanlines, then switch VSYNC off

    2. >>IF<< the above was successful, then the game must set VBLANK, wait at least 37 scanlines, then switch VBLANK off

    3. >>IF<< the above was successful, then immediately reset the pointer to the DirectDraw surface to 0.

     

    Also can the above be started on any scanlines, or just the last ones?


  4. thank you, the project64 is an easy one to get working, and I will switch to UltraHLe when i get it working

     

    No, you'll never get it working as it is 3DFX Banshee or Voodoo only. Don't waste your time with it, PJ64 rocks.


  5. This has confused me a little. Here is what I think you mean. STA with Zero Page memory addressing;

     

    pc++;

    cc++;

    // Increment TIA Pixel Counter by 3

    tmp = memory[pc];

    cc++;

    // Increment TIA Pixel Counter by 3, UpdateTIA

    memory[tmp] = a;

    cc++;

    // Increment TIA Pixel Counter by 3

     

    Now 6 pixels would be rendered before the write and then three would be added to the TIA pixel counter afterwards. This works perfectly for my NES emulator. Or are you saying that TIA register writes are delayed by 2/3 of a CPU cycle?


  6. Surely there is no need to call RunTIA() four times in this opcode as a TIA register is only affected on the last cycle.

    How do you handle delayed TIA writes (e.g. a write to a playfield register which is delayed by 2/3 CPU cycles)?

     

    Can you explain this one to me please? How can a TIA write be delayed?


  7. Observe the following. STA with absolute memory addressing;

     

    pc++;

    cc++;

     

    tmp = memory[pc];

    pc++;

    cc++;

     

    tmp += (memory[pc] << 8);

    pc++;

    cc++;

     

    RunTIA(); // Update TIA

    // STA <-- Write to graphical register

    cc++;

     

    Surely there is no need to call RunTIA() four times in this opcode as a TIA register is only affected on the last cycle.

     

    I am testing the power-up values by immediately pushing A or P or S or X or Y to the stack and then testing the value by reading it off.


  8. Cycle-accuracy is 100% required on the 2600, as the timing of the display kernels depend on it.
    On my NES emulator, I run the CPU until there is a write to a PPU register, then I run the PPU to catch up with it. Could this method not be employed with the Atari 2600?

     

    If you mean state of the RAM, RIOT and TIA registers, they are basically random.

     

    You must mean from console to console right? On my Atari 2600 Jr. they are the same on every power-up.


  9. Hello everyone. My name is Jam3s (James actually but that was already registered) and I am new to the Atari 2600 emulation scene. I have some questions to ask.

     

    1. Is cycle accuracy really necessary for the Atari 2600? I have a cycle accurate NES emulator and have recently implemented a cycle accurate core. Realistically, a standard core could easily handle what is required.

     

    2. Can anyone else share power-up values? I have my own and would like to compare.

     

    3. Are there any test ROMs for emulators?

     

    That's all that I can think of right now.

     

    Thank you in advance.

×
×
  • Create New...