GithubHelp home page GithubHelp logo

swolchok / dspython Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 1.0 12.77 MB

Fork of http://www.develer.com/~lmancini/dspython/ to hold fixes

Visual Basic 0.01% Vim Script 0.02% Shell 0.07% PHP 0.07% Objective-C 0.09% C# 0.20% Perl 0.61% Emacs Lisp 0.64% C++ 16.25% Python 39.77% C 42.28%

dspython's Introduction

This is the source code and complete instructions for building Python 2.5 for
the Nintendo DS.

Author:   Richard Tew.
Date:     28th January 2007
Email:    [email protected]
Website:  http://www.disinterest.org/NDS/Python25.html

Credits
-------

Python requires little work for it to run on other platforms.  If standard
output is supported so that things like printf work and there is some
method of input so that Python code can be entered and executed then most
of the work is done.  The rest is binding Python to the method of input
and also filesystem.  Most of the work was done already and the process of
making this port involved linking that work together.  These are the
people to thank for that work:

  The cross-compiling environment devkitPro/devkitArm.
  http://sourceforge.net/projects/devkitpro
  Wntrmute

  The patches to Python 2.5 so that it can be cross-compiled.
  https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1597850&group_id=5470
  Han-Wen Nienhuys & Jan Nieuwenhuizen

  The keyboard interface and console for the Nintendo DS.
  http://headkaze.webpal.info/
  Headspin.

  The filesystem support for homebrew devices.
  http://chishm.drunkencoders.com/gba_nds_fat/index.html
  Chishm

Compiling
---------

  1. Install the latest version of devkitPro.  This should include:
     [ http://sourceforge.net/projects/devkitpro ]
  
     - devkitARM
     - msys
     - libnds
     - libfat (not used at this time)
     - dswifi (not used at this time)
     
     The devkitpro installer should download and install these for you.

  2. Go to the MinGW web site and download and install in this order:
     [ http://mingw.sourceforge.net/download.shtml ] 
     
     - msysDTK
     - MinGW
     - msys-autoconf (at least version 2.59)
     - msys-automake (at least version 1.8.2)

     You may need to take some initiative getting msys and mingw
     working.  It didn't configure properly for me and I had to
     copy 'msys/1.0' over 'msys/' in order to get automake and autoconf
     into the path (the other folders in 'msys/1.0' are required to be
     on the same level as the binaries so it is not possible to add
     the 'bin' directories into the path).  Then I had to install the
     updated versions manually.

  3. Compile the zlib static library.

     a) cd NDSPython
        cd zlib-1.2.3
        make

     This should build 'libz.a' then it will error when it tries to
     link something else.  But that is not important as the static
     library is what we wanted.

  4. Compile the Python static library.

     You need to have Python installed and to know the path to it
     in order to be able to cross-compile it.  For me it is installed
     in '/c/Program\ Files/Python25' so replace that with your path
     to it.
     
     If your python is installed in the same location as mine, and
     all your settings are the same, then you should be able to use
     the same prebuilt 'configure' and 'Makefile'.
  
     a) cd ..
     	cd NDSPython
        cd slp-250
        export BASECFLAGS="-ffast-math -mthumb -mthumb-interwork -DARM9 -DNDS"
        export CFLAGS="-ffast-math -mthumb -mthumb-interwork -DARM9  -DNDS"
        export LDFLAGS="-specs=ds_arm9.specs -g -mthumb -mthumb-interwork"
   	export CC_FOR_BUILD=gcc
        export PYTHON_FOR_BUILD=/c/Program\ Files/Python25/python
        sh configure --host=arm-eabi --config-cache
     
     b) make

     This should build 'libpython2.5.a' then it will complain about not
     finding 'getcwd' and error when linking something after that.  But
     that is not important as you have the static library and 'getcwd' is
     provided by the NDSPython source code.

  5. Compile the NDSPython rom.

     a) Alter low level linker settings so that Python gets enough stack
        on the Nintendo DS device to run.  Edit this file:
        
          devkitPro\devkitARM\arm-eabi\lib\ds_arm9.ld

        Replace this altered section:

          MEMORY {

          /* original settings
            rom		: ORIGIN = 0x08000000, LENGTH = 32M
            ewram	: ORIGIN = 0x02000000, LENGTH = 4M - 4k
            dtcm	: ORIGIN = 0x0b000000, LENGTH = 16K
            itcm	: ORIGIN = 0x01000000, LENGTH = 32K
          */
            rom		: ORIGIN = 0x08000000, LENGTH = 32M
            ewram	: ORIGIN = 0x02000000, LENGTH = 4M - 260k
            dtcm	: ORIGIN = 0x023bf000, LENGTH = 260K - 4k
            itcm	: ORIGIN = 0x01000000, LENGTH = 32K
          }
  
     b) cd ..
        cd NDSPython
        make

     c) Install support for your homebrew device using dlditool.
        For instance for the compact flash Supercard:
        
        dlditool sccf.dldi NDSPython.nds

     d) If your homebrew device is one which uses the 'ds.gba' roms,
        then you need to type 'make' again, which will take the 'nds' rom
        with your homebrew support and build another 'ds.gba' rom with
        that support.

     This should give you a usable compiled rom.

  6. Install it on the Nintendo DS.
  
     a) Copy the NDSPython rom which works on your device somewhere on it.

     b) Copy 'NDSPython/NDSPython/python' to the root of your homebrew media.
        That is, the python directory found there should be placed directly
        in the root of your homebrew media.  This is where NDS Python looks
        for it.  You can test it works when you run NDS Python on your
        Nintendo DS by executing 'import slptest'.
        
        

dspython's People

Contributors

swolchok avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

zorplex

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.