-
Content Count
702 -
Joined
-
Last visited
-
Days Won
1
Posts posted by swapd0
-
-
A 2600 adapter it's in reality a console, you need a 6507 & TIA, also, how you can connect the TIA output to the Jaguar video output from the cartridge? I bet it's impossible.
-
1
-
-
3 minutes ago, dilinger said:You can find them in the gcc library (libgcc.a) directory available with m68k gcc.
Yes!!! I've included -lgcc and "all" linkers errors are gone.
-
1
-
-
Compiled but I still have the same errors, I've tried both libraries, I've seen that the library defines functions like cadd and cmult but I got undefined references to ___addsf3, ___multdf3, etc At least the cos, sin, round, errors are fixed.
-
On 11/28/2018 at 6:29 PM, ggn said:Also I totally forgot I have packaged up gcc 8.2 for macs (built on El Capitan) here: http://d-bug.mooo.com/various/brownart.tar.bz2. So worst case you could give this a shot!
IIRC I've this version installed with a very strip down version of the C libraries, and if I've a float in the sources I get a lot of linker errors (undefined references to ___addsf3, ___muldf3, etc), where can I find the source of the floating point library?
I know that floating point it's very slow but it's better to have project running and then make changes to remove the floating point part.
-
Yes I know that, but IMO it's a waste of time to use a branch object to skip a GPU Object.
-
On 9/29/2020 at 8:15 PM, SCPCD said:In the most up to date JTRM, the YPOS for GPU Object was removed.
In the netlist, there is no use of YPOS for Gpu object (the state machine always execute gpuint).
I think I have read somewhere that this feature was removed from the specification and replaced by the use of branch object.
Big mistake, it's easier to write a GPU object with YPOS and even HEIGHT than adding more objects to the list.
I think that they never asked to some game developers (where's the vertical mirror in bitmapped objects?...)
-
I'm assuming that gcc leaves d0/d1 and a0/a1 free, so I don't need to save them in my assembly routines, it's this true?
-
8 hours ago, CyranoJ said:On the same cart?
Yes, everything it's done but I'm fixing bugs in BurgerTom.
-
1
-
-
Remember that BurgerTom will come with two other games...
-
On 8/18/2020 at 11:00 PM, Machine said:I just figured out the ad says Burger Tom?
We changed the name to BurgerTom to avoid any IP issues, by the way, right now I'm fixing some bugs.
-
2
-
-
Ok, I've done all the changes except .text -> TEXT, .data -> DATA and .bss -> BSS.
After a clean make both versions of the game are the same!!!
Thanks a lot for all the work!
-
1
-
-
Yes, I changed .text to TEXT and the same for .data and .bss (I hope that I didn't understand in the wrong way)
Maybe you can remove the include "debugger.s" and the jsr _init_debugger to fix the bug.
-
By the way I get a compiler error with SHN_UNDEF but I've googled it and changed to 0.
-
-
I've downloaded the latest version 2.0.20 (sorry but I think that I was using 2.0.16), and I've done the modifications.
Almost the same size.
swapd0$ rmac-old -fe -o brownboot-old.o brownboot.s swapd0$ rmac-new -fe -o brownboot-new.o brownboot.s swapd0$ ls -l brownboot* -rw------- 1 swapd0 wheel 18548 13 ago 16:59 brownboot-new.o -rw------- 1 swapd0 wheel 18552 13 ago 16:58 brownboot-old.o -
9 minutes ago, ggn said:Sorry, but the invocation is wrong, it should be:
swapd0$ rmac-old -fe -o brownboot-old.o brownboot.s swapd0$ rmac-new -fe -o brownboot-new.o brownboot.s
(yes, it's a remnant from the old MadMac times, the idea behind this is that you can assemble multiple files from the command line that have different options you can switch on and off. So whenever rmac encounters an input file, it goes and assembles without parsing the rest of the arguments)
(I still believe there's an issue since the register clashing is real fwiw)
Ok, I will fix all the makefiles
Edit:It was correct in the makefiles...
-
34 minutes ago, ggn said:I'm 100% that the extra "0000 0000" are from a .long directive to align a data. It' this part of the code.
movei #_gpu_events_list,list_ptr movei #.execute_list,r1 jump (r1) load (list_ptr),events .long _gpu_events_list:: dc.l 0 ; pointer to events list"D020" it's the jump (r1) and the "A672" it's the load (list_ptr),events, then two bytes with zeros for the alignment but in the new version it appends 4 extra bytes.
-
20 minutes ago, ggn said:The other two sets of .o files seem to be an identical match, but I'm puzzled about these two. It seems like they're assembled from a different version of the source codes. Is it possible that this is the case?
I have only a version of the source code, and I've made a make clean of each project. Anyway I've done this just to be sure.
swapd0$ rmac-old -fe brownboot.s -o brownboot-old.o swapd0$ rmac-new -fe brownboot.s -o brownboot-new.o -
They are quite different. I think that it's better if I send you several object files.
In the gpu.o is where _GPU_SPRITE_OFFSET_X, _GPU_SPRITE_OFFSET_Y, _GPU_MAX_VIDEO_X are defined
gpu-new.o gpu-old.o main-new.o main-old.o video-new.o video-old.o brownboot-new.o brownboot-old.o
-
Done, ".text" changed for "TEXT", and the same for data and bss
Now the file size is sightly bigger (290,932 bytes) but still smaller than the one using old rmac. The labels are still clashing.
-
I've only changed the rmac version, same compiler options.
old rmac output size is 309,872 bytes
new rmac output size is 290,760 bytes
There are a lot of labels that are shifted.
I don't understand this, old rmac
00f0323c A _GPU_MAX_VIDEO_X 00f03240 A _GPU_MAX_VIDEO_Y 00f03234 a _GPU_SPRITE_OFFSETS 00f03234 A _GPU_SPRITE_OFFSET_X 00f03238 A _GPU_SPRITE_OFFSET_YNew rmac
00f03228 A _GPU_MAX_VIDEO_X 00f03228 A _GPU_MAX_VIDEO_Y 00f03228 a _GPU_SPRITE_OFFSETS 00f03228 A _GPU_SPRITE_OFFSET_X 00f03228 A _GPU_SPRITE_OFFSET_YOn the new version the labels are in a lower memory address and they are from an assembly file, so they are using the same instructions (same size). Also, why _GPU_SPRITE_OFFSET_Y are at the same address as _GPU_SPRITE_OFFSET_X? They are defined like this.
.long _gpu_sprite_dst:: dc.l 0,0 ; destination address _GPU_SPRITE_OFFSETS: _GPU_SPRITE_OFFSET_X:: dc.l 0 _GPU_SPRITE_OFFSET_Y:: dc.l 0 _GPU_MAX_VIDEO_X:: dc.l 0 _GPU_MAX_VIDEO_Y:: dc.l 0Any tool for the binary-diff? I've my own but the output it's something like this.
out-new.bin and out-old.bin has different sizes. differs at offset 0x22 5 4f differs at offset 0x23 38 e0 differs at offset 0x46 8 53 differs at offset 0x47 c4 64 differs at offset 0x4a a6 eb differs at offset 0x4b ac 4c differs at offset 0x201f b8 bc differs at offset 0x2061 0 1 differs at offset 0x2062 0 e5 differs at offset 0x2063 0 48 differs at offset 0x213d d0 d4 differs at offset 0x2142 49 4b differs at offset 0x2143 50 20 differs at offset 0x2148 49 4b differs at offset 0x2149 8a 5a differs at offset 0x214e 73 7d differs at offset 0x214f 4e 2 differs at offset 0x2158 90 9a differs at offset 0x2159 62 16 differs at offset 0x2471 0 1 differs at offset 0x2472 0 e5 differs at offset 0x2473 0 50 differs at offset 0x2477 0 1 differs at offset 0x2478 0 e5 differs at offset 0x2479 0 50 differs at offset 0x247e 49 4b-
1
-
-
With the older version it runs, at the start I print this through the skunk board, with the new version it hangs after the Starting console... message.
I'll have a look later at the symbol table.
Starting console... init memory alloc at 00032c00 find_file_system at 00802000 Found at 0080209c init_file_system at 0080209c with 26 files NTSC Jaguar -
Now it compiles but the game doesn't start.
-
I've done a full compile for BurgerTime and my engine library and It looks that there are something wrong.
I'm using gcc and rmac, I've a some .c and .s files for the gcc boot code (brownboot.s, zerocrtfini.c, zerolib.cpp, etc) I've included into this "library" the skunk.s, also I've my c/asm library common to all my games, and then I've the current game that I'm developing.
With the latest rmac version I've the following errors when I compile BurgerTime.
/opt/local/bin/gcc68k/lib/libcxx-jaguar/zerocrtfini.o: In function `_exit': zerocrtfini.c:(.text.exit+0x0): multiple definition of `_exit' /opt/local/bin/gcc68k/lib/libcxx-jaguar/tinyalloc.o: In function `_ta_init': tinyalloc.c:(.text.ta_init+0x0): multiple definition of `_ta_init' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o: In function `_skunkRESET': (.text+0x0): multiple definition of `_skunkRESET' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o: In function `_skunkNOP': (.text+0x3a): multiple definition of `_skunkNOP' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o: In function `_skunkCONSOLEWRITE': (.text+0x6e): multiple definition of `_skunkCONSOLEWRITE' obj/main.o: In function `_main': main.c:(.text.startup.main+0x0): multiple definition of `_main' /Users/Shared/apps/Jaguar/projects/lib/libkatu.a(debug_asm.o): In function `_skunkCONSOLEWRITE': (*ABS*+0x0): multiple definition of `_skunkFILEOPEN' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o:(.text+0x170): first defined here /Users/Shared/apps/Jaguar/projects/lib/libkatu.a(debug_asm.o): In function `_skunkCONSOLEWRITE': (*ABS*+0x0): multiple definition of `_skunkFILECLOSE' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o:(.text+0x2a0): first defined here /Users/Shared/apps/Jaguar/projects/lib/libkatu.a(debug_asm.o): In function `_skunkCONSOLEWRITE': (*ABS*+0x0): multiple definition of `_skunkFILEWRITE' /opt/local/bin/gcc68k/lib/libcxx-jaguar/skunk.o:(.text+0x1ca): first defined here /Users/Shared/apps/Jaguar/projects/lib/libkatu.a(gpu_asm.o): In function `DRAM': (*ABS*+0x0): multiple definition of `_gpu_events_list' /Users/Shared/apps/Jaguar/projects/lib/libkatu.a(sprite.o):(.bss._op_start+0x0): multiple definition of `__op_start'Ok, let's have a look at _skunkRESET, it's defined in skunk.s like this.
; skunkRESET() ; Resets the library, waits for the PC, and marks the console up or down _skunkRESET:: movem.l a1-a2,-(sp) move.w #$4001,_skunkReadMode ; ensure normal 4MB mode set continueRESET: move.l #-1,_skunkConsoleUp ; optimistic! bsr setAddresses ; get HPI addresses into a1 & a2 ; try and get both buffers, that tells us the console is up bsr getBothBuffers ; also sets skunkConsoleUp bsr restoreMode ; set correct flash mode movem.l (sp)+,a1-a2 ; Restore regs rtsAnd it's referenced in brownboot.s with a .extern _skunkRESET and somewhere in the same file I've a jsr _skunkRESET, it's not called from my engine library, neither from my game, and it's only defined in skunk.s... so why I've a "multiple definition" error?
edit:
After some testing looks like the symbol must be referenced from at least two different files to get the error of multiple definitions, and must be defined in a third file.
nm dump for skunk.o and brownboot.o
swapd0$ nm skunk.o 000000b0 T _skunkCONSOLECLOSE 000000f6 T _skunkCONSOLEREAD 0000006e T _skunkCONSOLEWRITE 000004a4 t _skunkConsoleUp 000002a0 T _skunkFILECLOSE 00000170 T _skunkFILEOPEN 00000214 T _skunkFILEREAD 000001ca T _skunkFILEWRITE 000002dc T _skunkMEMREAD 00000356 T _skunkMEMWRITE 0000003a T _skunkNOP 00000000 T _skunkRESET 00000028 T _skunkRESET6MB 000004a4 t _skunkReadMode 000004a4 t _skunkTimeout 000003dc t checkBuffer1 000003e8 t checkBuffer2 000003ba t checkbuffer 0000000c t continueRESET 00000436 t getBothBuffers 000003f4 t getBuffer 000003b2 t restoreMode 000003a0 t setAddresses 0000047e t waitforbufferack swapd0$ nm brownboot.o 00f02200 a A1_BASE 00f02208 a A1_CLIP ... 00000152 T __exit 00000000 A _exit 000004c8 T _init_debugger 000004c2 T _jaguar_reset 00000000 A _main 00000154 T _memcpy 000002e2 T _memmove 00000272 T _memset 00000466 T _putchar 0000047c T _rand 00000000 A _skunkCONSOLEWRITE 00000000 A _skunkNOP 00000000 A _skunkRESET 0000049e T _srandIf I use the old rmac I get an 'U' for _skunkRESET instead of an 'A'

sd cartridge for 7800?
in Atari 7800
Posted
I hope that all different solutions (Concerto & 7800GD) will have the same memory and support the same mappers (maybe new ones?).