Views: 1,615,527 | Main | Rules/FAQ | Memberlist | Active users | Last posts | Calendar | Stats | Online users | Search | 12-26-24 10:34 AM |
Guest: |
Main - Posts by coto |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 1/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
well hi everyone.
I'm very new, just registered. Currently I decided to sign here because I didn't earlier and well, let the code begin! cheers |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 2/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
thanks guys
also it seems something I ve been doing for these 2 years is nearly completion. Maybe |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 3/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Posted by profi200 I just read this, can't be more 100% agreed. Let's hope the staplepowers vanquish most useless trolls / crap posts ever born. There is way too much talent around to let it go because of children. - To do not derail this topic I would like to add something: besides the rainbow ponies I want to know if the 3DS has mirrored FCRAM addresses , (NDS does with MPU and cached areas) because that speed ups most emulators. Like from 2% to 80%. I mean the physical linear memory the MMU takes to create protected pages of virtual addresses. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 4/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Well this thread is for sharing experimental code that does whatever. If you're one of those who write random homebrew or quick snippets of code that would later be added to release projects, well this is a nice thread to share with!
My ARMv4 dynarec: https://github.com/cotodevel/armv4core/ it runs on NDS, emulates the ARMv4 Core very nice. I use it for debugging Homebrew/GBA Games (by restoring the stacks/ewram from some GBA emu memory dump). Supports PC relative fetches from memory (apparently ok), and it's full of bugs. But works. I'm looking forward your future homebrew projects as well! ciao |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 5/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
refactor is the key when a project-s purpose has been defeated. Reuse code |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 6/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Posted by StapleButter how about a command overlayer that reads cpu, ppu and dsp cycle timings, and if certain timeline is met (be it snes cpu cycle profiling), a command is sent over network, so the other client updates with a loss of one frame-interval (taking frame 60 for receive/sync/update emulation cycling on client, from server). So snes emulation would be stopped for that frame (so no desync problems arise) then restored for example server loops/executes the main core, but override input to p1, while client executes main core but overrides input to p2. edit: though for syncing , this would require accurate tracing of how many cpu cycles eat each opcode execution. something like polled cycle sync this is a fairy tale idea ,i know |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 7/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
isnt that related to broken services? |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 8/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
So this means this board should only be about 3DS engineering?
Because imho I really like talking about DS engineering. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 9/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
I too like DS reverse-engineering / virtualization, so I would like to talk about stuff like this and not only 3ds-only related stuff.
So I support this thread idea |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 10/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
cool stuff staple. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 11/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
I'd prefer the seriousness separated from more relaxed stuff. I am one of those guys that when is developing, prefers to have focus on the matter.
So if there's serious threads for research/development as long they are moderated OK / well respected among users then I don't mind.. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 12/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Nice find. Some blackscreens are by unimplemented banked interrupts of some nature (external chip latching the source counter) which happen synchronously/asynchronously by the time the CPU access that register.
ie the source interrupt latch happens once the CPU access the register once, against the source interrupt latch regardless CPU access. (effectively causing the CPU to enter IRQ/NMI mode when desired) |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 13/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
About the IRQ that may trigger an event after set, and then would be unset right before the IRQ cycle count IRQ says it would be triggered:
spinlock_sched() runs on any hardware IRQ (for example vblank) handler. (or at least in a process that runs separately from the cycle counter thread) process_id = you assign one up to 10 or any other number u8 status = 0/1 (enabled/disabled) callback = (u32)&handler pointer spinlock_createproc(u8 process_id,u8 status,u32cback_ptr new_callback) //allocate a process spinlock_modifyproc and spinlock_deleteproc should speak for themselves - //if set to 0 it will run the handler registered / 1 it wont spinlock_perm(u8 process_id,u8 status) - SPINLOCK.H http://pastebin.com/Hzg5FAuf SPINLOCK.C http://pastebin.com/Jqeam9kX Very basic I know, but it really works. For example if you want to run process #0 registered Only on scanline # 100 and #110 currentscanline_thread(){ if((scanline == 110) || (scanline == 100)){ spinlock_perm(0,0); } } //then later on scanline end nextscanline_thread(){ spinlock_perm(0,1); scanline++; } |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 14/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
i see, well I will try to repost whatever useful i'd/will write then. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 15/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
heres some wild ideas:
1) move planar 2 gpu opcodes to ARM9, so arm11 only cares about cycle processing and send commands (flush, gpu, sound and emulator commands). how? make an overlayer (like gbaemu4ds handles exceptions), so you will have to ROP ARM9 right before it goes to sleep waiting for interrupts, so it would have to jump to your gadget (command handler) (which could be @ 0x00080000 AXI WRAM ) . This would mean saving CPSR and doing a stackframe snapshot (saving r0-r7,r11,r12,lr), then on exit these would be restored . So ARM9 cpu would: handle 3DS services first rops enter command handler ( implement planar 2 linear opcodes, for example, here) exit goes to sleep as for the IO map that would be some shared memory between ARM11 and ARM9 . edit: use GNU C to compile ARM9 gadgets (you implement emu stuff there as well) also dont discourage. You are a great developer. |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 16/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
ah. I confused VRAM banks with GPU memory
https://www.3dbrew.org/wiki/Memory_layout "ARM9 Physical memory regions", my mistake! But my point still stands. I actually have done something like that before (for an experiment with gba code) |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 17/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Posted by StapleButter like ive said a few times before, yes I support the idea! |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 18/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
cool! |
coto |
| ||
Member (u32)(0xffff & (~0x3f8f)) Level: 11 Posts: 19/19 EXP: 4903 Next: 1082 Since: 05-23-15 From: chili Last post: 2996 days ago Last view: 2995 days ago |
Come to think about it, everything loads a bit faster. Good work
edit: "Possible board merge" http://4dsdev.org/thread.php?id=98&page=2 SQL Error Apparently the ID per page was either not found or not tied to actual content |
Main - Posts by coto |
Page rendered in 0.018 seconds. (2048KB of memory used) MySQL - queries: 22, rows: 97/97, time: 0.005 seconds. Acmlmboard 2.064 (2018-07-20) © 2005-2008 Acmlm, Xkeeper, blackhole89 et al. |