(Need Help!)ARDS Display Swap code

Discussion in 'NDS - ROM Hacking and Translations' started by gb_tianzon, Nov 15, 2010.

  1. gb_tianzon

    gb_tianzon Newbie

    Jan 13, 2009
    The DS contains several Power Managment functions, some accessed via I/O ports, some accessed via SPI bus (described later on below).

    4000304h - NDS9 - POWCNT1 - Graphics Power Control Register (R/W)
    0 Enable Flag for both LCDs (0=Disable) (Prohibited, see notes)
    1 2D Graphics Engine A (0=Disable) (Ports 008h-05Fh, Pal 5000000h)
    2 3D Rendering Engine (0=Disable) (Ports 320h-3FFh)
    3 3D Geometry Engine (0=Disable) (Ports 400h-6FFh)
    4-8 Not used
    9 2D Graphics Engine B (0=Disable) (Ports 1008h-105Fh, Pal 5000400h)
    10-14 Not used
    15 Display Swap (0=Send Display A to Lower Screen, 1=To Upper Screen)
    Use SwapBuffers command once after enabling Rendering/Geometry Engine.
    Improper use of Bit0 may damage the hardware?
    When disabled, corresponding Ports become Read-only, corresponding (palette-) memory becomes read-only-zero-filled.

    - http://nocash.emubase.de/gbatek.htm

    Is it possible to swap displays by changing the 15th bit through this ARDS code?

    24000305 00000083

    This works with No$gba but does nothing when used with my nintendo ds.

    The default value for RAM address 04000305h in the rom im working on is 82 and changing the 15th bit from 0 to 1 would be 82h + 1h=83.
    When activated,Lower screen display should be on the Upper LCD and Upper display should be on the Lower display.

    I used it with No$gba and the code works perfectly though sometimes it needs a screen refresh.

    Do I need to learn assembly to make this work on the real hardware?

    If this would work,I will be using this code to play tales of innocence on my broken ds lite.