Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Contains Acetone
Aug 22, 2004
DROP IN ANY US MAILBOX, POST PAID BY SECUR-A-KEY

Contains Acetone fucked around with this message at 17:44 on Jun 24, 2020

Adbot
ADBOT LOVES YOU

j4on
Jul 6, 2003
I fix computers to pick up chicks.

Shalinor posted:

... it just got uploaded for review :neckbeard:

What's up, waiting-for-review buddy!

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

j4on posted:

What's up, waiting-for-review buddy!


My blood pressure. STILL WAITING :ssj:

... I'm hoping it'll go into review status tomorrow. I really, really want this to be live in NZ for at least a day or two before Wednesday night.


Anyways, that is an awesome porcupine.

Nibelheim
Jul 7, 2006

Congratulations to you two! (And good luck!)

Apparently the timeframe between "In Review" and "Ready for Sale" can be as little as three hours. It's the "Waiting for Review" that'll get ya. :V

Nibelheim fucked around with this message at 16:45 on Feb 18, 2013

Maluco Marinero
Jan 18, 2001

Damn that's a
fine elephant.
I've redesigned the front page for the productivity application I've been working on, called Elephant. Fully responsive now from mobile to desktop. Also put together a new video demonstration for it all.

http://responsive.is/elephantneverforgets.com.au


http://youtu.be/NLT0TlCm5SU

lord funk
Feb 16, 2004

Nibelheim posted:

Apparently the timeframe between "In Review" and "Ready for Sale" can be as little as three hours.
...and as much as three days.

j4on
Jul 6, 2003
I fix computers to pick up chicks.

lord funk posted:

...and as much as three days.

Well, we just aced the review and now in "processing." Hurrah, everybody dance!

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

j4on posted:

Well, we just aced the review and now in "processing." Hurrah, everybody dance!

I entered "In Review" just an hour ago, and I'm betting I'll clear it soon too. Woo! :hfive:

I'm dancing to chip kitty dubstep, myself.

https://www.youtube.com/watch?v=GQlrH16WeJI

Centripetal Horse
Nov 22, 2009

Fuck money, get GBS

This could have bought you a half a tank of gas, lmfao -
Love, gromdul

Shalinor posted:

I entered "In Review" just an hour ago, and I'm betting I'll clear it soon too. Woo! :hfive:

I'm dancing to chip kitty dubstep, myself.

https://www.youtube.com/watch?v=GQlrH16WeJI

Oh, it's Flicky. I love Flicky. Good luck on the App Store, I may give it a shot.

tj9991
Jun 1, 2005
Skript Kiddie
I wasn't satisfied with the meditation timers I found for Android, so I wrote my own. I call it Meditation Assistant Free. It has very basic support for sharing sessions with the community. I'm adding features as I learn Java to help motivate my users to meditate at least once a day.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice

tj9991 posted:

I wasn't satisfied with the meditation timers I found for Android, so I wrote my own. I call it Meditation Assistant Free. It has very basic support for sharing sessions with the community. I'm adding features as I learn Java to help motivate my users to meditate at least once a day.



Hey meditation Timer making buddy. I released one for iOS a few months ago (http://zazenapp.chmoddesign.com/) as another of my "Apps I want but couldn't find so I made it myself" series.

Only registered members can see post attachments!

biochemist
Jun 2, 2005

Who says we don't have backbone?
Someone in IRC mentioned building snake as a good exercise to learn a new language- I'm pretty familiar with JavaScript but I want to learn more Object Oriented style. Also, I've never worked with Canvas before so-



http://thomasphorton.com/snake.html

I've got a bunch of little features I'd like to add like localstorage/db for high scores, but I primarily want to learn more about cleaning up the code and making it more efficient.

There has got to be a better way for me to detect collisions, but I'm storing my snake segments as an array of arrays [[x1, y1], [x2, y2]...] and I can't find a good way to detect if something's already there. Right now on every game tick I check each each snake segment to see if the snake head exists in the same spot- that's definitely not the most efficient way.

Overall I think it was fun to slam this out in 2 hours and it'll be a good learning experience going back and refactoring. I want to use a library like QUnit to learn about unit testing, so this could be the time to do it.

edit: no mobile yet, but it would be cool to do some stuff with touch- just probably really hard to play.

HappyHippo
Nov 19, 2003
Do you have an Air Miles Card?
Nice job

biochemist posted:

There has got to be a better way for me to detect collisions, but I'm storing my snake segments as an array of arrays [[x1, y1], [x2, y2]...] and I can't find a good way to detect if something's already there. Right now on every game tick I check each each snake segment to see if the snake head exists in the same spot- that's definitely not the most efficient way.

Given the number of elements you're working with this method is absolutely fine for what you're doing here. There's no need to introduce more complexity unless it's actually causing a performance issue. The only thing I would do different is maybe use objects for the positions, ie [{x: x1, y: y1},{x: x2, y: y2}...]. That way your code is more readable because you're accessing segment.x and segment.y instead of segment[0] and segment[1].

biochemist
Jun 2, 2005

Who says we don't have backbone?

HappyHippo posted:

Nice job


Given the number of elements you're working with this method is absolutely fine for what you're doing here. There's no need to introduce more complexity unless it's actually causing a performance issue. The only thing I would do different is maybe use objects for the positions, ie [{x: x1, y: y1},{x: x2, y: y2}...]. That way your code is more readable because you're accessing segment.x and segment.y instead of segment[0] and segment[1].

Thanks! The main reason I went with an array of arrays is so I can use unshift and pop to manipulate the segments- I unshift the head into the body, calculate a new head, and pop the last segment off on each redraw.

Objects might be good for the apples though- it would let me store some data on them like color and point value. Thanks for the idea!

HappyHippo
Nov 19, 2003
Do you have an Air Miles Card?

biochemist posted:

Thanks! The main reason I went with an array of arrays is so I can use unshift and pop to manipulate the segments- I unshift the head into the body, calculate a new head, and pop the last segment off on each redraw.

Objects might be good for the apples though- it would let me store some data on them like color and point value. Thanks for the idea!

You can still do your unshifting/popping with an array of objects though, can't you?

biochemist
Jun 2, 2005

Who says we don't have backbone?

HappyHippo posted:

You can still do your unshifting/popping with an array of objects though, can't you?

I was re-thinking what I said on my walk home- you're absolutely right.

Pardot
Jul 25, 2001






wrote out my name in github commits :c00lbert:

Superschaf
May 20, 2010

"Sorry guys, can't push that fix out this week! I need to spell my name!"

Jewel
May 2, 2009

Pardot posted:



wrote out my name in github commits :c00lbert:

Wow, that's the funniest thing I've seen in a while. Did you really spend a year on that.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
Nah, he's just a time traveler

GeneralZod
May 28, 2003

Kneel before Zod!
Grimey Drawer

GeneralZod posted:

Like the Qt toolkit? Like browsers? Then how would you like Qt running in a browser?! All Javascript and HTML5 - no nacl needed!



Announced here, to thunderous silence:

http://ssj-gz.blogspot.co.uk/2012/11/quickie-qtguijs-it-mostly-lives.html

Some more screenshots & docs here:

http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki

GeneralZod posted:

Some more updates on this here and here, plus a big bunch of demos and screenshots here.

Next up: KDE + Kate:



There's probably close to a million lines of C++ code there converted to Javascript - including a copy of JavascriptCore :catdrugs:

GeneralZod fucked around with this message at 11:39 on Feb 21, 2013

TheresaJayne
Jul 1, 2011

biochemist posted:


There has got to be a better way for me to detect collisions, but I'm storing my snake segments as an array of arrays [[x1, y1], [x2, y2]...] and I can't find a good way to detect if something's already there. Right now on every game tick I check each each snake segment to see if the snake head exists in the same spot- that's definitely not the most efficient way.


Why check every segment, all you need to do is check the location the head is moving into - is it empty or not.

POW instant collision check.

akadajet
Sep 14, 2003

biochemist posted:

Someone in IRC mentioned building snake as a good exercise to learn a new language- I'm pretty familiar with JavaScript but I want to learn more Object Oriented style. Also, I've never worked with Canvas before so-

Not that this is vital to the game itself, but you may want to be aware that the webfont you're using doesn't render well in Windows.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice

j4on posted:

What's up, waiting-for-review buddy!



I just saw this on one of the design blogs I read, and thought it looked familiar.... congrats!!!
http://www.swiss-miss.com/2013/02/petting-zoo.html

SuicideSnowman
Jul 26, 2003
Just finished up my "infinite" terrain algorithm in my 2D side scrolling game. I use a Minecraft style approach where I generate regions surrounding the player. When the player moves into a new region it removes old regions and adds new ones. The draw also checks to make sure it's not drawing any tiles that are off the screen. All in all it's fairly efficient and runs extremely smoothly while using very little memory. The regions are stored in a Dictionary with the upper left corner position as the key so I can quickly add and remove new regions as needed.

https://www.youtube.com/watch?v=xvPocVSYwn8

Sorry for the headache inducing tiles. Obviously it will look nothing like this when finished, but my goals was to stress the game by having a tile in every available spot. It's also hard to tell because the current tile causes somewhat of an optical illusion but I'm basically moving all around in different directions throughout the video. I'm not sure yet how far it will let me go before it breaks, but I imagine whenever the float values containing the position become so large that the computer can no longer process them correctly.

The next step is to actually generate a world that's more realistic. Not exactly sure how I'm going to accomplish it yet. Thinking I might generate the world before hand and save it to a file and then just pull in regions from the file as I need them, but I'm not sure how the performance will be by constantly pulling info from a file.

Also, I'm really liking Monogame so far. When I tried a similar algorithm in Unity I just couldn't figure out a way to make it work efficiently while this solution took me one night to put together and I couldn't be happier with the results.

SuicideSnowman
Jul 26, 2003
Generated some hills for my algorithm. They're a little boring right now though:

https://www.youtube.com/watch?v=CeY5wAfxvyw

Contains Acetone
Aug 22, 2004
DROP IN ANY US MAILBOX, POST PAID BY SECUR-A-KEY

Contains Acetone fucked around with this message at 17:44 on Jun 24, 2020

Deus Rex
Mar 5, 2005

Contains Acetone posted:

Generates the following GLSL:

C++ code:
#version 330
#version 330
Not pictured: All the boring OpenGL setup no one wants to deal with. I promise I'll create a screenshot with it at some point.

stupid question probably, but what is the #version directive? I don't think I've seen that before.

snack soul
Jul 6, 2005

Deus Rex posted:

stupid question probably, but what is the #version directive? I don't think I've seen that before.

http://www.opengl.org/wiki/Core_Language_%28GLSL%29#Version

ToxicFrog
Apr 26, 2008


Not really a screenshot yet, but I'm overhauling an old project of mine that dumps game maps to generate pretty interactive HTML5 Canvases rather than browser-crushing tables of thousands of static images.

I'm also porting it to a new language, so right now it doesn't even generate HTML, just plain text. Still, I'm pretty happy with the results so far. The levels are recognizeable even in ASCII art.

(If you don't recognize it, that's System Shock 1)

SuicideSnowman
Jul 26, 2003
Took a little time away from generating maps to creating a few tiles that were a little less boring that white blocks with black border:



Still need to work on the underground tile a little bit because it looks a little weird when repeating. I want to also make the grass a little more random.

Also restructured the way I was storing my tiles. Originally my tile was a class that stored a byte consisting of the tile type. Storing about 3.5 million tiles made the executable take roughly 700k memory which I thought was acceptable. Simply changing it to a struct brought it down to under 150k! I wasn't aware that classes required that much more overhead. I also scrapped the idea of allowing negative positions referenced by a Vector2 dictionary in favor of using a multi-dimensional array that starts at 0,0 to help increase the overall speed of swapping the different tile regions.

I'm really not sure what I'm going to do with this yet. I'm not really trying to just make a Terraria clone, but some of the ideas in the game are interesting to me. I'd like to do something with a little more exploration and less "mining" of tiles. Either way, just working on the various algorithms I'm using to create the world has been a great learning experience.

ToxicFrog
Apr 26, 2008


My map generator is looking a lot nicer now:



Next step is to make it possible to filter objects by type, and mouse over them for more information. At some point I need to add support for slopes, too - some of those ledges shouldn't be displayed at all (since slopes mean that they're actually a smooth ramp, not a staircase), and there's some ledges and walls that aren't being displayed and should be because they're implied by the presence of sloped tiles.

hendersa
Sep 17, 2006

Time for a status update on stuff. The VHDL NES is coming along, though my work has kept me busy and progress is dragging along. My current plan is to push for my work on the project to be a graduate-level independent study course over the summer. I'm also looking at targeting the XSA-3S1000 platform for the testing on actual hardware, since it has the VGA port built in and enough I/O pins for the cartridge connector. I'll have to rig up an external op-amp circuit for the audio output, but that shouldn't be too tough. I would have liked a built-in DAC, but what are you going to do. It seems silly to buy the big add-on board that provides an audio DAC when I could throw one together for $15.

As for more active work, my embedded systems design class has a course project using an ARM-based BeagleBoard-xM single board computer. The project is left up to each team of students as to what they would like to do with it. Most students are making things like network routers, stepper motor controllers, and traffic light controllers. Of course, me being me, I chose to make a Super Nintendo. If you have that much multimedia capability in your embedded platform, why not make the most out of it? I'm the only one in the class working by myself, rather than being in a team, so that allows me to work on my project during all of that unused idle time in my day that falls between midnight and 3 AM.



The current timing of the S-video NTSC signal is a bit off, leading to a shifted picture, so I need to figure out how to address that. Let me tell you... there are few things more tedious than calculating timing information for video signals. Software adjustments to expand it to fullscreen are costly in terms of performance, but I might be able to get away with a simple rendering offset: render a centered 640x480 subbuffer within the 720x482 native framebuffer with "filler panels" on the sides. I can get enough frames per second to actually play a game with the render offset, so that's a plus. For my testing setup, I'm pushing the S-video's NTSC signal through a VGA converter box so that I can use my desktop monitor as the display.

I have a Linux 3.7.8 kernel with some experimental drivers running the system, and I'm still hacking on the kernel audio codec driver to get the audio working properly. Input is via a Tomee USB SNES controller. I could have gone with an actual SNES controller plugged into a special USB adapter, but you experience some noteworthy input lag using that method. The USB driver and software configuration for the controller also needs some work. Hopefully, that part will be far less hacking on kernel drivers and more user-space work instead.

Once the major subsystems are all working, I'll put together a controller-driven GUI to turn the system into a formal "embedded appliance". I'll also rework the partitions to make as much of the filesystem mounted as read-only as possible, allowing you to turn the power on and off quickly without requiring an filesystem check. Reducing boot time, adding a boot splash screen, etc. also need to be addressed.

hendersa fucked around with this message at 17:35 on Feb 27, 2013

karms
Jan 22, 2006

by Nyc_Tattoo
Yam Slacker
Man that is already really awesome stuff.

Tres Burritos
Sep 3, 2009

Christ almighty.

Keebler
Aug 21, 2000
Wow nice, that's a lot of work! Are you also writing your own emulator for the SNES or using something off the shelf?

Doctor w-rw-rw-
Jun 24, 2008

Keebler posted:

Wow nice, that's a lot of work! Are you also writing your own emulator for the SNES or using something off the shelf?

There are off-the-shelp hardware implementations of the SNES available?

hendersa
Sep 17, 2006

Keebler posted:

Wow nice, that's a lot of work! Are you also writing your own emulator for the SNES or using something off the shelf?

The emulator is SNES9X (v1.5.3). In particular, it is the SNES9X-SDL port. It has fallback C-based emulation cores, and while the fallback cores are slower than their x86 assembly counterparts, there aren't assembly cores for ARM available. Besides, I have enough CPU horsepower to perform the emulation at at least 30 FPS, which is the refresh rate of NTSC. It's actually emulating at 60 FPS, but if the FPS drops because of computing-intensive activity, you never even notice because it doesn't get below the 30 FPS threshold of the video signal.

I chose the SDL port because the base SNES9X only uses X11 as its rendering target and event capture mechanism on the Linux platform. I'm running on a raw, native resolution frame buffer target (/dev/fb0) without an X server, and SDL allows me to use the framebuffer as a video target (the "fbcon" video driver). Using SDL also allows me to use the various SDL test programs to run through each subsystem (audio, video, input) to troubleshoot kernel issues. I've found that the SDL port of SNES9X has a few quirks, but it isn't anything that I can't fix. Joystick/gamepad support was commented out for some reason, it wasn't parsing button configuration from the config file, etc. Little problems that were solved fairly quickly by running through the SDL test programs to capture data and then hard-coding it into SNES9X.

Much of the needed code is out there, but the trick comes in getting it all configured and running. After a while, you get really good at finding all the bits and pieces that you need, since the real work is in designing and configuring the system, rather than writing code for every little subsystem. I've spent more time digging through kernel bug report mailing lists than I have touching code. There are a lot of wikis that contained the info that I needed, but it took some doing to resolve conflicting and outdated information. In a few cases, I just had to look at the kernel source to find out what was really going on, since I was seeing a lot of "I think it works like this..." on mailing lists, and it just wasn't true.

Doctor w-rw-rw- posted:

There are off-the-shelp hardware implementations of the SNES available?

There are a few bits and pieces of hardware SNES implementations out there:

fpgasnes
snes-apu-fpga
SNES SPC music player

Basically, there are a lot of (usually incomplete) available hardware designs for SNES subsystems that could be cobbled together to get something working. For my project, though, I am using a commodity hardware design and am emulating the SNES functionality in software.

Keebler
Aug 21, 2000
Was responding to the wrong person, never mind :)

Thanks for the additional information!

Adbot
ADBOT LOVES YOU

hendersa
Sep 17, 2006

I was happy to finally get my last major audio bug diagnosed and taken care of. After a little bit more tuning, the audio now works like a champ with minimal CPU impact. Once I got that part up and rolling, I recorded a clip of the BeagleBoard SNES running in its current state: https://www.youtube.com/watch?v=enscdpjscz0

Still quite a bit to do, but the major subsystems are all up and running now.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply