-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.old
153 lines (114 loc) · 5.35 KB
/
README.old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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'.