Posts tagged c++
Getting Back Into Parker 6K4 / 6K6 Controller Programming Again
0Its been a long time since I did any work on the Parker Controllers, but I have been having the itch again for quite a while to do some more work on it. There were many things I was doing with the controller that could have been optimized, or improved – such as better feature detection and improved latency. I also never really got around to adding encoder support for any of my previous projects with the controller.
I recently got a Parker 6K6 controller from eBay to work with. They are available for less than 50 dollars nowadays. Its been a lot of fun writing new code to talk back and forth with the controller in a proper, organized way. I have made a new basic communication library that allows easy connection and Send/Receive capability and can be shared across various C++ projects, so if I want to make something new I can just import that code and get going. Adding an interface with wxWidgets 3.xx is fairly straight forward and saves a lot of time. A long time ago I had used an old Parker controller (It wasn’t a 6K4, it was a much older model that used an ISA connection card) to make an experimental CNC routing table for a saw. It was pretty basic, it just about worked but wasn’t very good.
My son is also going to tech school and has been expressing an interest in learning how to work with CNC machines a little more in-depth than just loading a model and pressing the Start button, so I think if I can teach him some of this from a purely technical level, it will help him understand better. I think that him helping to build the machine and understand the programming will be quite beneficial. G-Code in itself is quite a complex thing to learn, especially from an optimization stand point, so we will have to see how it goes.
As I make progress in code, I will make some updates here. If you are interested in this sort of thing or have any questions, let me know in the comments below. Not sure anyone even uses this controller anymore!
Dennis Ritchie, father of Unix and C, Has Passed Away
0Dennis Ritchie, creator of the C programming language and co-creator of the Unix operating system, has died aged at the age of 70.
Thank-you for giving us a superior language, and being a pioneer in the age of computing. Rest in peace!
/* for Dennis Ritchie */ #include <stdio.h> main()Â { printf("Goodbye World"); }
ZD Net Article:Â http://www.zdnet.com/news/dennis-ritchie-father-of-unix-and-c-dies/6314570
Wiki entry on C:Â http://en.wikipedia.org/wiki/C_%28programming_language%29Â
Win32 – SDL Loses Sound When The Main Window Loses Focus – Fix
0So, I ran into an interesting problem this week while working on the “Alien Invasion” music disk that causes all sound to be disabled when the main SDL window would lose focus or become hidden. This could be a bit of a problem for a music disk, so I looked into trying to figure it out for myself.At first I tried the usual SDL culprits, which are the event system for handling focus, but no luck there.
After some poking around in the SDL source code, I was finally able to find a fix. In SDL_dx5audio.c you can change the following function to read:
void DX5_SoundFocus(HWND hwnd) { // This makes sound audible regardless of focus being lost //mainwin = hwnd; }
A better solution long-term in SDL will be to have an option to do this, rather than having to change the code, or just have this enabled by default. We’ll see! This was tested on 1.2.14 which is available to download from http://www.libsdl.org Hopefully someone else can find this useful too 🙂
NOW! Amstrad CPC Music Disk Released At Main Party 2010
1NOW! is a music disk I have been working on in collaboration with Ultrasyd and Fenyx Kell for the Amstrad CPC 128K system. The music disk features 12 awesome music tracks, and was coded in a little over two weeks before I get settled into working on Zine again. This is my first production on the Amstrad (and also the first CPC project for Brainstorm) that was any good (as I did a bit of BASIC many moons ago), I have played with a friends system many years ago as a kid, but this is the first piece of code I have written on the system that hasn’t been utter shite. I am very pleased with the outcome of this project, and the music is amazing 🙂
I started working on this project on Sept. 13 with Ultrasyd, as the people who were supposed to write him a music disk had bailed out of the project. I took it on as a challenge, realizing the path would not be straight and easy, plus I have been looking for an excuse to get back into 8-bit development for quite some time 🙂
The project is written using Z88DK (available HERE) and uses C and Z80 Assembly language. I used CPCRSlib for some of the graphics code, mixed with a bit of my own dodgy code. The music replayer is by Targhan and available HERE.
There were many technical challenges on this project. The biggest was the small amount of RAM available to the system at any one time, certainly not enough to hold all the music let alone the program and the data it needed to run. At one point, I spent 2 solid days working on getting 5 tunes in and working without crashing the computer, when I realized a mistake I had made in some code earlier that would allow me to hold many more. So at around 4pm yesterday I was able to fit all 12 songs into the production without a problem. Nothing quite like a last second fix for a production thats due to be released the very next morning 🙂 Many thanks to Ultrasyd for staying up late on the CVGM OneLiner to get this thing finished in time for Main (and showing it off to the Amstrad community there). There is also a hidden, 13th tune 🙂
Download the DSK file Here. To run, insert the disk and type RUN “NOW!” to start the music disk. Up & Down arrow keys to change between music. Escape to quit. If you wish to run this in an emulator, I recommend using JavaCPC or WinAPE. This disk has been fully tested on real 6128 Hardware (Thanks again, Ultrasyd!).
Full Production Credits
Music: Ultrasyd/BRS and Fenyx Kell
Graphics: Yes/BRS (Loading Screen), Ultrasyd/BRS (Main Picture)
Code: FishGuy876/BRS
See the TXT file on the DSK/Zip for a full list of everyones greetings and thanks 🙂
EDIT: The music disk was entered into the Wild compo at Main and ranked in 3rd place!!! Fantastic! \o/ Congratulations to everyone again! It can also be found on Pouet now, where you can comment and rate it! Thanks!
Annoying Problems With std::vector on Linux Vs. Windows
1So I spent most of this weekend working on getting my engine to compile correctly under GCC/Linux (Ubuntu 10.4) and ran into some serious headaches. It’s been a few years since I last built anything on Linux at all (last time was when I did some work for Epic Interactive and their linux ports) and took me a little bit to remember how makefiles worked etc. and bring my SDL code up to date.
After compiling the code, I was having a hell of a time trying to figure out why it would always cause a segmentation fault after the first few seconds of running. Here is what gdb had to say:
[Thread debugging using libthread_db enabled] [New Thread 0xb3da2b70 (LWP 4813)] [Thread 0xb3da2b70 (LWP 4813) exited] [New Thread 0xb3da2b70 (LWP 4815)] Program received signal SIGSEGV, Segmentation fault. 0x0807c27d in ?? () (gdb) backtrace #0 Â 0x0807c27d in ?? () #1 Â 0x08083eee in ?? () #2 Â 0x0807e59f in ?? () #3 Â 0x08082231 in ?? () #4 Â 0x08062d98 in ?? () #5 Â 0x0804deaa in ?? () #6 Â 0x0806659b in ?? () #7 Â 0x00369bd6 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6 #8 Â 0x08049891 in ?? ()
Unfortunately, that doesn’t really tell me much of anything 🙂 After a little bit of playing around with the manual pages in GDB, and some serious googling, I was able to get the app to compile with some debug symbols. This is the output:
[Thread debugging using libthread_db enabled] [New Thread 0xb3da2b70 (LWP 3711)] [Thread 0xb3da2b70 (LWP 3711) exited] [New Thread 0xb3da2b70 (LWP 3713)]
/usr/include/c++/4.4/debug/vector:265:error: attempt to subscript container with out-of-bounds index 0, but container only holds 0 elements.
Objects involved in the operation: sequence "this" @ 0x0xb162bf4 { type = NSt7__debug6vectorImSaImEEE; }
Program received signal SIGABRT, Aborted. 0x0012d422 in __kernel_vsyscall () [Thread debugging using libthread_db enabled] [New Thread 0xb3da2b70 (LWP 3711)] [Thread 0xb3da2b70 (LWP 3711) exited] [New Thread 0xb3da2b70 (LWP 3713)] /usr/include/c++/4.4/debug/vector:265:error: attempt to subscript container with out-of-bounds index 0, but container only holds 0 elements.
Objects involved in the operation: sequence "this" @ 0x0xb162bf4 {Â type = NSt7__debug6vectorImSaImEEE; }
Program received signal SIGABRT, Aborted.0x0012d422 in __kernel_vsyscall ()
This error is generated whenever I try and set up Vectors in the code to handle some rather simple arrays. I even tested the code where I created a vector, and checked its size to see if it was 0 and was still able to create the same problem. This is how I did all the safety checks in my code; if Vector.size() > 0 { Safe To Do Some Stuff, If Size Was Legal For Array }.
So, for whatever reason, they behave very differently than in Windows. I really don’t have the time to figure out the specific reasons, though after a couple of hours of googling trying to get GDB to display as much information as it did, it turns out a lot of people have issues with vectors doing strange things on Linux. Â As a result, I will be removing that code from the project to make sure it’ll compile and run on all 3 platforms (Windows, Mac and Linux) without any further issues! Lucky for me, it is an easy fix!
Recent Comments