andywangrex / imame4all

Automatically exported from code.google.com/p/imame4all
0 stars 0 forks source link

[Feature Request] Android MIPS support #84

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
ill like to see mame4droid running on mips based android devices, like the novo 
7 basic.

Ive had some success in recompiling projects like android tem and connectbot to 
mips, but in case of mame4droid, it will install and startup, but it crashes 
whiout giving any error after selecting the rom folder.

Thanks.

Original issue reported on code.google.com by shivan...@gmail.com on 16 Dec 2011 at 10:53

GoogleCodeExporter commented 9 years ago
i dont have a mips device so i cant develop/test for...

Original comment by seleuco....@gmail.com on 22 Dec 2011 at 6:42

GoogleCodeExporter commented 9 years ago
And the android mips sdk/ndk? the sdk is a bit buggy(hell, the linux one even 
has a crc error and cant be used) and the mips cpu seem to be only avalible for 
android-12. But its something.

Original comment by shivan...@gmail.com on 23 Dec 2011 at 6:38

GoogleCodeExporter commented 9 years ago
/home/shivan/Desktop/obj_mame_android/android/memcmp.o
/home/shivan/Desktop/obj_mame_android/android/memcpy.o
/home/shivan/Desktop/obj_mame_android/android/memset.o
/home/shivan/Desktop/obj_mame_android/android/strcmp.o
/home/shivan/Desktop/obj_mame_android/android/strlen.o
/home/shivan/Desktop/obj_mame_android/android/strncmp.o

bad, i cant be compiled for mips, in those, 2 cpus and another file that i dont 
remember now, the compile gives a unknow instruccions errors, and it compile ok 
for arm so :(

Original comment by shivans...@gmail.com on 25 Dec 2011 at 10:33

GoogleCodeExporter commented 9 years ago
You can remove this files from makefiles... Are only for optimization... It 
should compile with the default stdio ones

Original comment by seleuco....@gmail.com on 26 Dec 2011 at 8:32

GoogleCodeExporter commented 9 years ago
ok i removed those on android.mak, but the cpu assembly does not compile, 
m68000_cyclone and z80_drz80 gives errors, and i think Z8000 does too, there no 
way to use some other cpu? and something inside vidhrdw gives assembly error 
too.

Cant you give it a quick look? you know the code, so you may figure out a 
walkaround to compile the lib.

Using the android mips NDK r5b/r6m/r7m from mips developer site you should be 
able to do compile it as well you do for arm, you only need to do a few trivial 
edits to the android makefile

Like this:
BASE_DEV=/home/shivan/Desktop/android-ndk-r5b/platforms/android-8/arch-mips

PREFIX=/home/shivan/Desktop/android-ndk-r5b/toolchains/mips-linux-android-4.4.3/
prebuilt/linux-x86/bin/mips-linux-android-

CFLAGS += -march=mips32

and remove the arm-only lines, you will find them out quick.

If you manage to compile it, i may try it out myself, no matter if you dont 
have a mips device.

Original comment by shivan...@gmail.com on 11 Jan 2012 at 6:54

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago

i did some changes to add asm cpus after version 1.0... I suggest you to 
download taged source mamedroid 1.0... Then you can figure the changes i did...

Good look

Original comment by seleuco....@gmail.com on 12 Jan 2012 at 7:20

GoogleCodeExporter commented 9 years ago
its very very close now. assembly errors in only 3 files.

/tmp/ccKdBm1S.s: Assembler messages:
/tmp/ccKdBm1S.s:4283: Error: unrecognized opcode `mov $4,$4,asr'
/tmp/ccKdBm1S.s:4284: Error: illegal operands `add $12,$14,$4,asr'
make: *** [obj_mame_android/sound/fmopl.o] Error 1
make: *** Waiting for unfinished jobs....
/tmp/ccAD509S.s: Assembler messages:
/tmp/ccAD509S.s:5934: Error: unrecognized opcode `mov $5,$5,asr'
/tmp/ccAD509S.s:5935: Error: illegal operands `add $25,$2,$5,asr'
/tmp/ccAD509S.s:5947: Error: unrecognized opcode `mov $12,$12,asr'
/tmp/ccAD509S.s:5948: Error: illegal operands `add $11,$2,$12,asr'
/tmp/ccAD509S.s:6170: Error: unrecognized opcode `mov $2,$2,asr'
/tmp/ccAD509S.s:6171: Error: illegal operands `add $15,$3,$2,asr'
/tmp/ccAD509S.s:7127: Error: unrecognized opcode `mov $14,$14,asr'
/tmp/ccAD509S.s:7128: Error: illegal operands `add $3,$8,$14,asr'
/tmp/ccAD509S.s:7139: Error: unrecognized opcode `mov $5,$5,asr'
/tmp/ccAD509S.s:7140: Error: illegal operands `add $12,$8,$5,asr'
/tmp/ccAD509S.s:8243: Error: unrecognized opcode `mov $5,$5,asr'
/tmp/ccAD509S.s:8244: Error: illegal operands `add $16,$2,$5,asr'
/tmp/ccAD509S.s:8256: Error: unrecognized opcode `mov $15,$15,asr'
/tmp/ccAD509S.s:8257: Error: illegal operands `add $12,$2,$15,asr'
/tmp/ccAD509S.s:8479: Error: unrecognized opcode `mov $2,$2,asr'
/tmp/ccAD509S.s:8480: Error: illegal operands `add $18,$22,$2,asr'
/tmp/ccAD509S.s:9554: Error: unrecognized opcode `mov $24,$24,asr'
/tmp/ccAD509S.s:9555: Error: illegal operands `add $23,$2,$24,asr'
/tmp/ccAD509S.s:9567: Error: unrecognized opcode `mov $22,$22,asr'
/tmp/ccAD509S.s:9568: Error: illegal operands `add $6,$2,$22,asr'
/tmp/ccAD509S.s:9688: Error: unrecognized opcode `mov $2,$2,asr'
/tmp/ccAD509S.s:9689: Error: illegal operands `add $24,$fp,$2,asr'
/tmp/ccAD509S.s:21506: Error: unrecognized opcode `mov $5,$5,asr'
/tmp/ccAD509S.s:21507: Error: illegal operands `add $13,$6,$5,asr'
/tmp/ccAD509S.s:21518: Error: unrecognized opcode `mov $3,$3,asr'
/tmp/ccAD509S.s:21519: Error: illegal operands `add $2,$6,$3,asr'
make: *** [obj_mame_android/sound/fm.o] Error 1

mips-linux-android-gcc: obj_mame_android/sound/fm.o: No such file or directory
mips-linux-android-gcc: obj_mame_android/sound/fmopl.o: No such file or 
directory
mips-linux-android-gcc: obj_mame_android/vidhrdw/vector.o: No such file or 
directory
make: [mame] Error 1 (ignored)

Original comment by shivan...@gmail.com on 13 Jan 2012 at 12:17

GoogleCodeExporter commented 9 years ago
It seem it is failing fm  stuff, as far i know you have removed all .s 
dependencies. This files are huge, maybe compiler has problem with it. Try to 
disable gcc optimizatioms in a incremental way.  You can also change make files 
to disable drivers that depends on. 

Original comment by seleuco....@gmail.com on 13 Jan 2012 at 7:09

GoogleCodeExporter commented 9 years ago
Hi guys,

Do you think that it's possible run mame4droid on a mips processor? It's really 
very interesting.

Original comment by buzon.ca...@gmail.com on 19 Jan 2012 at 11:36

GoogleCodeExporter commented 9 years ago
The above assembler message indicates that in fm, fmopl and vector there are 
lines of assemble code ("mov $...")that gcc can not deal with. Since assemble 
code is dependent on OS and CPU, ASM for ARM definitely won't be recognized by 
MIPS. To make the compilation succeed, you have to find those ASM code and 
replace with similiar C code.
I did some trace into fm.cpp and I think the ASM code resides in "osinline.h" 
(mix_sample)for Mame4all.

In "osinline.h", there is:
//dst=(src>>1)+(dst>>1);
#define mix_sample _mix_sample
#define _mix_sample(dst,src) \
    __asm__ __volatile__ \
    ( " mov %2, %2, asr #1 \n" \
    " add %0, %1, %2 , asr #1 \n" \
    : "=r" (dst) \
    : "r"  (src),"r" (dst) \
    )

I don't know ASM. Perhaps "dst=(src>>1)+(dst>>1);" is the answer.

Original comment by ericavd...@gmail.com on 18 May 2012 at 12:10