<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Video Games &#8211; jstookey.com</title>
	<atom:link href="https://jstookey.com/category/arcade/feed/" rel="self" type="application/rss+xml" />
	<link>https://jstookey.com</link>
	<description>Jake Stookey&#039;s Blog</description>
	<lastBuildDate>Tue, 05 Oct 2021 01:23:45 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://jstookey.com/wp-content/uploads/2019/06/180x180-150x150.png</url>
	<title>Video Games &#8211; jstookey.com</title>
	<link>https://jstookey.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">163115521</site>	<item>
		<title>Introducing... Pimple Frenzy!</title>
		<link>https://jstookey.com/introducing-pimple-frenzy/</link>
					<comments>https://jstookey.com/introducing-pimple-frenzy/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Tue, 01 Dec 2020 07:08:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=7615</guid>

					<description><![CDATA[I am very excited to announce the release of a new mobile game, called Pimple Frenzy. It's playable on iPhone, iPad, Android, and ChromeOS devices! With the help of some [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://www.elatedgames.com/pimple-frenzy/"><img fetchpriority="high" decoding="async" width="1024" height="500" src="https://jstookey.com/wp-content/uploads/2020/12/feature_graphic.png" alt="" class="wp-image-7623" srcset="https://jstookey.com/wp-content/uploads/2020/12/feature_graphic.png 1024w, https://jstookey.com/wp-content/uploads/2020/12/feature_graphic-300x146.png 300w, https://jstookey.com/wp-content/uploads/2020/12/feature_graphic-768x375.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>I am very excited to announce the release of a new mobile game, called Pimple Frenzy. It's playable on iPhone, iPad, Android, and ChromeOS devices!</p>



<p>With the help of some friends we made the first version of this game in the 90's. 25 years later a lot of work has gone into getting this completed and into your hands! You don't want to miss out, you gotta try it!</p>



<center><a href="https://apps.apple.com/app/id1509827384"><img decoding="async" width="200" src="https://www.elatedgames.com/wp-content/uploads/2020/12/dl.png" alt=""></a>&nbsp;&nbsp;&nbsp;<a href="https://play.google.com/store/apps/details?id=com.elatedgames.pimplefrenzy"><img decoding="async" width="220" src="https://www.elatedgames.com/wp-content/uploads/2020/12/en_badge_web_generic.png" alt="" class="wp-image-153"></a></center>



<p>Visit the official web site <a href="https://www.elatedgames.com/pimple-frenzy/">here</a>!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/introducing-pimple-frenzy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7615</post-id>	</item>
		<item>
		<title>How to make good-looking Windows icons</title>
		<link>https://jstookey.com/how-to-make-nice-looking-windows-icons/</link>
					<comments>https://jstookey.com/how-to-make-nice-looking-windows-icons/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sun, 12 Apr 2020 12:52:19 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=3688</guid>

					<description><![CDATA[Converting an image into a window .ico icon is not hard, but it's easy to do the wrong way. Before I learned the right way to do it, I exported [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Converting an image into a window .ico icon is not hard, but it's easy to do the wrong way. Before I learned the right way to do it, I exported a .ico file in the Gimp and it looked terrible. I started with a nice image like this one:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="http://jstookey.com/wp-content/uploads/2020/04/icon-1024x1024.png" alt="" class="wp-image-3689" width="237" height="237" srcset="https://jstookey.com/wp-content/uploads/2020/04/icon-1024x1024.png 1024w, https://jstookey.com/wp-content/uploads/2020/04/icon-300x300.png 300w, https://jstookey.com/wp-content/uploads/2020/04/icon-150x150.png 150w, https://jstookey.com/wp-content/uploads/2020/04/icon-768x768.png 768w, https://jstookey.com/wp-content/uploads/2020/04/icon.png 1320w" sizes="(max-width: 237px) 100vw, 237px" /></figure></div>



<p>I loaded it into the Gimp paint program and exported it to "icon.ico" and attached it to my executable executable program. Much to my dismay, the resulting icon looked like this in File Explorer:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="61" height="22" src="https://jstookey.com/wp-content/uploads/2020/04/bad_looking_icon_in_explorer.png" alt="" class="wp-image-3691"/></figure></div>



<p>Even the higher resolution icon in Control Panel Add/Remove programs looks bad:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="124" height="55" src="https://jstookey.com/wp-content/uploads/2020/04/bad_looking_icon_in_control_panel.png" alt="" class="wp-image-3692"/></figure></div>



<p>Terrible, right? It's shocking. What is going on here? As I understand it this created a single-resolution icon. Windows does a bad job of auto-scaling the single-size icon. The answer is to create a multi-size icon,  (also called an auto-resize icon). This is a single file that contains custom icons at varying resolutions. ImageMagic will generate this multi-size icon effortlessly with the following command:</p>



<p>convert -background none icon.png -define icon:auto-resize icon.ico</p>



<p>The "-background none" option is useful if your icon has a transparent background. Here is what the resulting icon looks like in File Explorer and Control Panel Add/Remove Programs:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="70" height="19" src="https://jstookey.com/wp-content/uploads/2020/04/good_looking_icon_in_explorer.png" alt="" class="wp-image-3694"/></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="116" height="43" src="https://jstookey.com/wp-content/uploads/2020/04/good_looking_icon_in_control_panel.png" alt="" class="wp-image-3693"/></figure></div>



<p>This looks much better than the first attempt at creating it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/how-to-make-nice-looking-windows-icons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3688</post-id>	</item>
		<item>
		<title>Build SDL2 projects for iOS with Xcode 11</title>
		<link>https://jstookey.com/building-sdl2-projects-for-ios-with-xcode-11/</link>
					<comments>https://jstookey.com/building-sdl2-projects-for-ios-with-xcode-11/#comments</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sat, 11 Apr 2020 05:26:09 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=3607</guid>

					<description><![CDATA[I created a cross-platform video game. It's runs well on Windows, Mac, Linux, Android, and iOS. If you want to play the game, it is called Pimple Frenzy, it is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://jstookey.com/wp-content/uploads/2020/04/sdl_xcode_ios-1.png" alt="" class="wp-image-3649" width="298" height="224" srcset="https://jstookey.com/wp-content/uploads/2020/04/sdl_xcode_ios-1.png 640w, https://jstookey.com/wp-content/uploads/2020/04/sdl_xcode_ios-1-300x225.png 300w, https://jstookey.com/wp-content/uploads/2020/04/sdl_xcode_ios-1-360x270.png 360w, https://jstookey.com/wp-content/uploads/2020/04/sdl_xcode_ios-1-80x60.png 80w" sizes="auto, (max-width: 298px) 100vw, 298px" /></figure></div>



<p>I created a cross-platform video game. It's runs well on Windows, Mac, Linux, Android, and iOS. If you want to play the game, it is called <a href="https://www.elatedgames.com/pimple-frenzy/">Pimple Frenzy</a>, it is super fun, and can be installed from the App Store or Google Play:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="https://www.elatedgames.com/pimple-frenzy/"><img loading="lazy" decoding="async" src="https://jstookey.com/wp-content/uploads/2020/12/feature_graphic.png" alt="" class="wp-image-7623" width="420" height="205" srcset="https://jstookey.com/wp-content/uploads/2020/12/feature_graphic.png 1024w, https://jstookey.com/wp-content/uploads/2020/12/feature_graphic-300x146.png 300w, https://jstookey.com/wp-content/uploads/2020/12/feature_graphic-768x375.png 768w" sizes="auto, (max-width: 420px) 100vw, 420px" /></a></figure></div>



<center><a href="https://apps.apple.com/app/id1509827384"><img decoding="async" width="200" src="https://www.elatedgames.com/wp-content/uploads/2020/12/dl.png" alt=""></a>&nbsp;&nbsp;&nbsp;<a href="https://play.google.com/store/apps/details?id=com.elatedgames.pimplefrenzy"><img decoding="async" width="220" src="https://www.elatedgames.com/wp-content/uploads/2020/12/en_badge_web_generic.png" alt="" class="wp-image-153"></a></center>



<p>I'm using a fairly generic SDL2 configuration, so I thought I would share it in case anyone else is looking for a clean and easy approach to compiling your SDL2 project for iPhones and iPads. Thanks to <a href="https://lazyfoo.net/tutorials/SDL/52_hello_mobile/ios_mac/index.php">LazyFoo's tutorial</a> for getting me headed in the right direction. See below for step-by-step instructions. If you want to customize the name of your project, just replace "sdlproject" with your project name in each step.</p>



<ul class="wp-block-list"><li>mkdir ~/projects/sdlproject</li><li>cd ~/projects/sdlproject</li><li>Download the latest sdl2, sdl2_image, sdl2_ttf, sdl2_mixer:</li><li>wget <a href="https://www.libsdl.org/release/SDL2-2.0.12.tar.gz">https://www.libsdl.org/release/SDL2-2.0.12.tar.gz</a></li><li>wget <a href="https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.5.tar.gz">https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.5.tar.gz</a></li><li>wget <a href="https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz">https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz</a></li><li>wget <a href="https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz">https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz</a></li><li>tar -xzf <a href="https://www.libsdl.org/release/SDL2-2.0.12.tar.gz">SDL2-2.0.12.tar.gz</a></li><li>tar -xzf <a href="https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.5.tar.gz">SDL2_image-2.0.5.tar.gz</a></li><li>tar -xzf <a href="https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz">SDL2_mixer-2.0.4.tar.gz</a></li><li>tar -xzf <a href="https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz">SDL2_ttf-2.0.15.tar.gz</a></li><li>rm *.tar.gz</li><li>cp -R SDL2-2.0.12/Xcode-iOS/Template/SDL\ iOS\ Application/* ~/projects/sdlproject</li><li>find ___PROJECTNAME___.xcodeproj -type f | xargs -0 sed -i '' -e 's/___PROJECTNAME___/sdlproject/g'</li><li>mv ___PROJECTNAME___.xcodeproj sdlproject.xcodeproj</li></ul>



<ul class="wp-block-list"><li>Now start up Xcode and open ~/projects/sdlproject.xcodeproj</li><li>Select the Build target and go to General and change the Display Name to sdlproject, and the Bundle Identifier to com.companyname.sdlproject.</li><li>Where it says ___PROJECTNAME___ in the build targets to the right of the Play and Stop buttons, select ___PROJECTNAME___ and select "Manage Schemes"</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="323" height="34" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.18-AM.png" alt="" class="wp-image-3632" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.18-AM.png 323w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.18-AM-300x32.png 300w" sizes="auto, (max-width: 323px) 100vw, 323px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="257" height="426" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.52-AM.png" alt="" class="wp-image-3633" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.52-AM.png 257w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.52.52-AM-181x300.png 181w" sizes="auto, (max-width: 257px) 100vw, 257px" /></figure></div>



<ul class="wp-block-list"><li>From the Manage Schemes window, click on the ___PROJECTNAME___ scheme, wait a few seconds, then click on it again to rename it. Rename it to sdlproject and press enter to apply the change. This should change the build target name from ___PROJECTNAME___ to sdlproject.</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="766" height="433" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.56.28-AM.png" alt="" class="wp-image-3634" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.56.28-AM.png 766w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.56.28-AM-300x170.png 300w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.56.28-AM-135x75.png 135w" sizes="auto, (max-width: 766px) 100vw, 766px" /></figure>



<p></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="408" height="36" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.57.11-AM.png" alt="" class="wp-image-3635" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.57.11-AM.png 408w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.57.11-AM-300x26.png 300w" sizes="auto, (max-width: 408px) 100vw, 408px" /></figure></div>



<ul class="wp-block-list"><li>Remove SDL.xcodeproj from Sources</li><li>Remove main.c from sources</li><li>Add each .c and .h file from ~/projects/sdlproject (a directory containing your SDL source files) to Sources</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.08.03-AM.png" alt="" class="wp-image-3610" width="270" height="313" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.08.03-AM.png 470w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.08.03-AM-259x300.png 259w" sizes="auto, (max-width: 270px) 100vw, 270px" /></figure></div>



<p>You should end up with something like this:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.10.19-AM.png" alt="" class="wp-image-3611" width="325" height="610" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.10.19-AM.png 455w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.10.19-AM-160x300.png 160w" sizes="auto, (max-width: 325px) 100vw, 325px" /></figure></div>



<ul class="wp-block-list"><li>Right click "Sources" -&gt; Add Files -&gt; Select the "Create groups" option for Added folders and add SDL2-2.x.x/Xcode-iOS/SDL/SDL.xcodeproj to Sources</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="766" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-1024x766.png" alt="" class="wp-image-3612" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-1024x766.png 1024w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-300x224.png 300w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-768x575.png 768w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-360x270.png 360w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM-80x60.png 80w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.14.56-AM.png 1290w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<ul class="wp-block-list"><li>Similarly, add SDL2_image-2.x.x/Xcode-iOS/SDL/SDL.xcodeproj to Sources with option, “Added folders:Create groups”</li><li>(do the same for SDL2_mixer-2.x.x and SDL2_ttf-x.x)</li><li>Set the build target to libSDL-ios and from the menu, select Product-&gt; Build. You should see "Build Succeeded". </li></ul>



<p></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="393" height="86" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.20.42-AM.png" alt="" class="wp-image-3616" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.20.42-AM.png 393w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.20.42-AM-300x66.png 300w" sizes="auto, (max-width: 393px) 100vw, 393px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="182" height="200" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.22.04-AM.png" alt="" class="wp-image-3617"/></figure></div>



<ul class="wp-block-list"><li>Set the build target to libSDL_image-ios</li><li>Sources-&gt;SDL_image.xcodeproj-&gt;Public Headers-&gt;add SDL2-2.x.x/includes as group</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="782" height="724" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.24.11-AM-1.png" alt="" class="wp-image-3619" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.24.11-AM-1.png 782w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.24.11-AM-1-300x278.png 300w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.24.11-AM-1-768x711.png 768w" sizes="auto, (max-width: 782px) 100vw, 782px" /></figure></div>



<p></p>



<ul class="wp-block-list"><li>from the menu, select Product-&gt; Build. You should see "Build Succeeded".</li><li>Do the same for SDL_ttf and SDL_mixer (add the SDL2 includes folder to the library's Public Headers, select the build target to the library, then Build). You should end up with something like this:</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="303" height="506" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.28.58-AM-1.png" alt="" class="wp-image-3621" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.28.58-AM-1.png 303w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.28.58-AM-1-180x300.png 180w" sizes="auto, (max-width: 303px) 100vw, 303px" /></figure></div>



<p></p>



<ul class="wp-block-list"><li>Right click "Sources" and add the SDL2 include directory as group</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="902" height="727" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.48.43-AM-1.png" alt="" class="wp-image-3630" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.48.43-AM-1.png 902w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.48.43-AM-1-300x242.png 300w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.48.43-AM-1-768x619.png 768w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure></div>



<p></p>



<ul class="wp-block-list"><li>Right click Sources and add sdl_ttf.h, sdl_image.h, and sdl_mixer.h from each of the respective libraries</li></ul>



<p></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="262" height="281" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.16.09-AM-1.png" alt="" class="wp-image-3642"/></figure></div>



<ul class="wp-block-list"><li>Select the sdlproject build target, then select the top sdlproject:</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="268" height="93" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-12.59.10-AM.png" alt="" class="wp-image-3636"/></figure></div>



<p></p>



<ul class="wp-block-list"><li>Select the general&nbsp;tab.<ul><li>Configure settings as needed. In my case I configure Target device-&gt;iPhone, iPad, iOS 8. Landscape Left, Hide Status bar, requires full screen</li><li>Under Frameworks, Libraries, and Embedded Content, add the following if they are not already listed (note that you may need slightly different libraries depending on what your code requires):</li></ul></li></ul>



<p></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="615" height="488" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.12.58-AM-1.png" alt="" class="wp-image-3640" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.12.58-AM-1.png 615w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.12.58-AM-1-300x238.png 300w" sizes="auto, (max-width: 615px) 100vw, 615px" /></figure></div>



<ul class="wp-block-list"><li>Under sdlproject-&gt;Signing and Capabilities,&nbsp;<ul><li><ul><li>Select the Team for code signing (you may need to configure this first) and Set the Bundle Identifier: com.companyname.sdlproject</li></ul></li></ul></li><li>Add any needed data directories or folders to Resources, taking care to select the "folder reference" option (instead of the "create groups" option we've been using for most other additions).</li><li>You may want to edit the existing images in Resources to be something appropriate for your project:</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="256" height="100" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.12.18-AM.png" alt="" class="wp-image-3638"/></figure></div>



<ul class="wp-block-list"><li>Select the sdlproject build target, and a device. In my case, I'm testing on an iPad.</li></ul>



<p></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="352" height="36" src="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.24.53-AM.png" alt="" class="wp-image-3644" srcset="https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.24.53-AM.png 352w, https://jstookey.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-11-at-1.24.53-AM-300x31.png 300w" sizes="auto, (max-width: 352px) 100vw, 352px" /></figure>



<ul class="wp-block-list"><li>From the menu select Product-&gt;Build. If you get Build Succeeded, Select Product-&gt;Run to run the program on your iOS device. With any luck you're in business!</li></ul>



<p><strong>Troubleshooting Missing Libraries</strong></p>



<p>You will see the following if you didn't include AudioToolbox.framework:<br>Undefined symbol: _AudioQueueNewInput<br>Undefined symbol: _AudioQueueSetProperty<br>Undefined symbol: _AudioQueueAllocateBuffer<br>Undefined symbol: _AudioQueueNewOutput<br>Undefined symbol: _AudioQueueEnqueueBuffer<br>Undefined symbol: _AudioQueueDispose<br>Undefined symbol: _AudioQueueStart<br>Undefined symbol: _AudioQueuePause</p>



<p>You will see the following if you didn't include AVFoundation.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_AVAudioSession<br>Undefined symbol: _AVAudioSessionCategoryPlayAndRecord<br>Undefined symbol: _AVAudioSessionCategoryRecord<br>Undefined symbol: _AVAudioSessionInterruptionTypeKey<br>Undefined symbol: _AVAudioSessionCategoryAmbient<br>Undefined symbol: _AVAudioSessionModeDefault<br>Undefined symbol: _AVAudioSessionInterruptionNotification<br>Undefined symbol: _AVAudioSessionCategorySoloAmbient<br>Undefined symbol: _AVAudioSessionCategoryPlayback</p>



<p>You will see the following if you didn't include CoreBluetooth.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_CBCentralManager<br>Undefined symbol: <em>OBJC_CLASS</em>$_CBUUID<br>Undefined symbol: _CBAdvertisementDataLocalNameKey</p>



<p>You will see the following if you didn't include CoreGraphics.framework:<br>Undefined symbol: _CGRectZero<br>Undefined symbol: _CGRectEqualToRect<br>Undefined symbol: _CGImageGetAlphaInfo<br>Undefined symbol: _CGContextDrawImage<br>Undefined symbol: _CGImageGetHeight<br>Undefined symbol: _CGImageGetBytesPerRow<br>Undefined symbol: _CGColorSpaceGetNumberOfComponents<br>Undefined symbol: _CGColorSpaceGetBaseColorSpace<br>Undefined symbol: _CGColorSpaceGetColorTable<br>Undefined symbol: _CGContextRelease<br>Undefined symbol: _CGImageGetDataProvider<br>Undefined symbol: _CGColorSpaceCreateDeviceRGB<br>Undefined symbol: _CGColorSpaceGetColorTableCount<br>Undefined symbol: _CGColorSpaceRelease<br>Undefined symbol: _CGImageGetWidth<br>Undefined symbol: _CGImageGetColorSpace<br>Undefined symbol: _CGDataProviderCopyData<br>Undefined symbol: _CGBitmapContextCreate<br>Undefined symbol: _CGColorSpaceGetModel<br>Undefined symbol: _CGImageGetBitsPerPixel<br>Undefined symbol: _CGDataProviderCreateSequential<br>Undefined symbol: _CGDataProviderRelease</p>



<p>You will see the following if you didn't include CoreMotion.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_CMMotionManager</p>



<p>You will see the following if you didn't include CoreServices.framework:<br>Undefined symbol: _UTTypeConformsTo<br>Undefined symbol: _kUTTypePNG<br>Undefined symbol: _kUTTypeJPEG<br>Undefined symbol: _kUTTypeTIFF<br>Undefined symbol: _kUTTypeGIF</p>



<p>You will see the following if you didn't include Foundation.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_NSMapTable<br>Undefined symbol: <em>objc_destroyWeak </em><br><em>Undefined symbol: _objc_storeWeak </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSArray<br>Undefined symbol: <em>OBJC_CLASS</em>$_NSMutableArray<br>Undefined symbol: <em>NSFoundationVersionNumber </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSDate<br>Undefined symbol: <em>OBJC_CLASS</em>$_NSObject<br>Undefined symbol: <em>NSDefaultRunLoopMode </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSException<br>Undefined symbol: <em>objc_sync_enter </em><br><em>Undefined symbol: __objc_empty_cache </em><br><em>Undefined symbol: _CFStringCreateWithCString </em><br><em>Undefined symbol: _objc_sync_exit </em><br><em>Undefined symbol: _CFRunLoopRunInMode </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSNumber<br>Undefined symbol: <em>NSLog </em><br><em>Undefined symbol: _kCFRunLoopDefaultMode </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSBundle<br>Undefined symbol: <em>kCFTypeDictionaryValueCallBacks </em><br><em>Undefined symbol: _OBJC_METACLASS</em>$_NSObject<br>Undefined symbol: <em>CFRunLoopGetCurrent </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSData<br>Undefined symbol: <em>OBJC_CLASS</em>$_NSRunLoop<br>Undefined symbol: <em>OBJC_CLASS</em>$_NSString<br>Undefined symbol: <em>objc_retainAutoreleaseReturnValue </em><br><em>Undefined symbol: _objc_autoreleaseReturnValue </em><br><em>Undefined symbol: _objc_storeStrong </em><br><em>Undefined symbol: _objc_alloc </em><br><em>Undefined symbol: _objc_autoreleasePoolPush </em><br><em>Undefined symbol: _objc_autorelease </em><br><em>Undefined symbol: _objc_msgSendSuper2 </em><br><em>Undefined symbol: _objc_release </em><br><em>Undefined symbol: _CFDictionaryCreate </em><br><em>Undefined symbol: _objc_retainAutorelease </em><br><em>Undefined symbol: _objc_loadWeakRetained </em><br><em>Undefined symbol: _objc_retainAutoreleasedReturnValue </em><br><em>Undefined symbol: _objc_getProperty </em><br><em>Undefined symbol: _objc_retain </em><br><em>Undefined symbol: _CFURLCreateWithFileSystemPath </em><br><em>Undefined symbol: _CFRelease </em><br><em>Undefined symbol: _objc_autoreleasePoolPop </em><br><em>Undefined symbol: _objc_end_catch </em><br><em>Undefined symbol: ___CFConstantStringClassReference </em><br><em>Undefined symbol: ___objc_personality_v0 </em><br><em>Undefined symbol: _objc_begin_catch </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSFileManager<br>Undefined symbol: <em>objc_msgSend </em><br><em>Undefined symbol: _objc_setProperty_nonatomic_copy </em><br><em>Undefined symbol: _objc_enumerationMutation </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSNotificationCenter<br>Undefined symbol: <em>kCFTypeDictionaryKeyCallBacks </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_NSDictionary<br>Undefined symbol: <em>OBJC_EHTYPE</em>$_NSException</p>



<p></p>



<p>You will see the following if you didn't include GameController.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_GCController<br>Undefined symbol: _GCControllerDidConnectNotification<br>Undefined symbol: _GCControllerDidDisconnectNotification</p>



<p></p>



<p>You will see the following if you didn't include ImageIO.framework:<br>Undefined symbol: _CGImageSourceCreateWithURL<br>Undefined symbol: _CGImageSourceCreateWithDataProvider<br>Undefined symbol: _CGImageSourceCreateImageAtIndex<br>Undefined symbol: _kCGImageSourceTypeIdentifierHint<br>Undefined symbol: _CGImageSourceGetType</p>



<p></p>



<p>You will see the following if you didn't include libc++.tbd:<br>Undefined symbol: operator new[](unsigned long)<br>Undefined symbol: operator new(unsigned long)<br>Undefined symbol: operator delete<br>Undefined symbol: ___gxx_personality_v0<br>Undefined symbol: operator delete(void*)</p>



<p></p>



<p>You will see the following if you didn't include Metal.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_MTLSamplerDescriptor<br>Undefined symbol: <em>OBJC_CLASS</em>$_MTLTextureDescriptor<br>Undefined symbol: <em>OBJC_CLASS</em>$_MTLRenderPassDescriptor<br>Undefined symbol: <em>OBJC_CLASS</em>$_MTLVertexDescriptor<br>Undefined symbol: <em>OBJC_CLASS</em>$_MTLRenderPipelineDescriptor<br>Undefined symbol: _MTLCreateSystemDefaultDevice</p>



<p></p>



<p>You will see the following if you didn't include OpenGLES.framework:<br>Undefined symbol: <em>glBlitFramebuffer </em><br><em>Undefined symbol: _glRenderbufferStorage </em><br><em>Undefined symbol: _glLabelObjectEXT </em><br><em>Undefined symbol: _glBufferSubData </em><br><em>Undefined symbol: _kEAGLColorFormatSRGBA8 </em><br><em>Undefined symbol: _glBindRenderbuffer </em><br><em>Undefined symbol: _OBJC_METACLASS</em>$_EAGLContext<br>Undefined symbol: <em>glRenderbufferStorageMultisample </em><br><em>Undefined symbol: _glFinish </em><br><em>Undefined symbol: _glRotatef </em><br><em>Undefined symbol: _glTranslatef </em><br><em>Undefined symbol: _glDeleteFramebuffers </em><br><em>Undefined symbol: _glPushMatrix </em><br><em>Undefined symbol: _glCheckFramebufferStatusOES </em><br><em>Undefined symbol: _kEAGLColorFormatRGB565 </em><br><em>Undefined symbol: _glBlendEquationSeparate </em><br><em>Undefined symbol: _glFramebufferTexture2DOES </em><br><em>Undefined symbol: _kEAGLDrawablePropertyColorFormat </em><br><em>Undefined symbol: _glBindFramebuffer </em><br><em>Undefined symbol: _glBindFramebufferOES </em><br><em>Undefined symbol: _glTexParameteriv </em><br><em>Undefined symbol: _glInvalidateFramebuffer </em><br><em>Undefined symbol: _glFramebufferRenderbuffer </em><br><em>Undefined symbol: _glDrawTexfOES </em><br><em>Undefined symbol: _glBufferData </em><br><em>Undefined symbol: _glReadPixels </em><br><em>Undefined symbol: _glBindBuffer </em><br><em>Undefined symbol: _glBlendEquationSeparateOES </em><br><em>Undefined symbol: _glDeleteBuffers </em><br><em>Undefined symbol: _glBlendFunc </em><br><em>Undefined symbol: _glGetBooleanv </em><br><em>Undefined symbol: _glGenBuffers </em><br><em>Undefined symbol: _glGenFramebuffersOES </em><br><em>Undefined symbol: _glGetAttribLocation </em><br><em>Undefined symbol: _glUseProgram </em><br><em>Undefined symbol: _glUniformMatrix4fv </em><br><em>Undefined symbol: _glUniform4f </em><br><em>Undefined symbol: _glUniform1i </em><br><em>Undefined symbol: _glTexSubImage2D </em><br><em>Undefined symbol: _glBlendFuncSeparate </em><br><em>Undefined symbol: _glShaderSource </em><br><em>Undefined symbol: _glShaderBinary </em><br><em>Undefined symbol: _kEAGLColorFormatRGBA8 </em><br><em>Undefined symbol: _glGetUniformLocation </em><br><em>Undefined symbol: _glGetProgramiv </em><br><em>Undefined symbol: _glBindTexture </em><br><em>Undefined symbol: _glGetIntegerv </em><br><em>Undefined symbol: _glCreateProgram </em><br><em>Undefined symbol: _glDeleteTextures </em><br><em>Undefined symbol: _kEAGLDrawablePropertyRetainedBacking </em><br><em>Undefined symbol: _glDrawArrays </em><br><em>Undefined symbol: _glGetShaderiv </em><br><em>Undefined symbol: _glGetString </em><br><em>Undefined symbol: _glGetError </em><br><em>Undefined symbol: _glColor4f </em><br><em>Undefined symbol: _glResolveMultisampleFramebufferAPPLE </em><br><em>Undefined symbol: _glLoadIdentity </em><br><em>Undefined symbol: _glDisable </em><br><em>Undefined symbol: _glDiscardFramebufferEXT </em><br><em>Undefined symbol: _glLinkProgram </em><br><em>Undefined symbol: _glDeleteShader </em><br><em>Undefined symbol: _glDeleteProgram </em><br><em>Undefined symbol: _glBindAttribLocation </em><br><em>Undefined symbol: _glMatrixMode </em><br><em>Undefined symbol: _glVertexAttribPointer </em><br><em>Undefined symbol: _glEnableVertexAttribArray </em><br><em>Undefined symbol: _glActiveTexture </em><br><em>Undefined symbol: _glDeleteFramebuffersOES </em><br><em>Undefined symbol: _glClear Undefined symbol: _OBJC_CLASS</em>$_EAGLContext<br>Undefined symbol: _glGenTextures<br>Undefined symbol: _glOrthof<br>Undefined symbol: _glPopMatrix<br>Undefined symbol: _glDisableClientState<br>Undefined symbol: _glDeleteRenderbuffers<br>Undefined symbol: _glBlendFuncSeparateOES<br>Undefined symbol: _glTexCoordPointer<br>Undefined symbol: _glViewport<br>Undefined symbol: _glDisableVertexAttribArray<br>Undefined symbol: _glCreateShader<br>Undefined symbol: _glTexImage2D<br>Undefined symbol: _glVertexPointer<br>Undefined symbol: _glBlendEquationOES<br>Undefined symbol: _glClearColor<br>Undefined symbol: _glGetRenderbufferParameteriv<br>Undefined symbol: _glFramebufferTexture2D<br>Undefined symbol: _glCompileShader<br>Undefined symbol: _glGetShaderInfoLog<br>Undefined symbol: _glAttachShader<br>Undefined symbol: _glEnable<br>Undefined symbol: _glScissor<br>Undefined symbol: _glCheckFramebufferStatus<br>Undefined symbol: _glEnableClientState<br>Undefined symbol: _glGenFramebuffers<br>Undefined symbol: _glTexParameteri<br>Undefined symbol: _glGenRenderbuffers<br>Undefined symbol: _glTexEnvf<br>Undefined symbol: _glPixelStorei<br>Undefined symbol: _glGetProgramInfoLog</p>



<p></p>



<p>You will see the following if you didn't include QuartzCore.framework:<br>Undefined symbol: <em>OBJC_CLASS</em>$_CAEAGLLayer<br>Undefined symbol: <em>OBJC_CLASS</em>$_CAMetalLayer<br>Undefined symbol: <em>OBJC_CLASS</em>$_CADisplayLink</p>



<p></p>



<p>You will see the following if you didn't include UIKit.framework:<br>Undefined symbol: <em>UIApplicationWillResignActiveNotification </em><br><em>Undefined symbol: _OBJC_METACLASS</em>$_UIView<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIKeyCommand<br>Undefined symbol: <em>OBJC_CLASS</em>$_UITextField<br>Undefined symbol: <em>UIKeyInputEscape </em><br><em>Undefined symbol: _UIKeyboardWillShowNotification </em><br><em>Undefined symbol: _UIKeyboardWillHideNotification </em><br><em>Undefined symbol: _UIApplicationWillEnterForegroundNotification </em><br><em>Undefined symbol: _UITextFieldTextDidChangeNotification </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_UIPasteboard<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIApplication<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIAlertAction<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIAlertController<br>Undefined symbol: <em>UIWindowLevelAlert </em><br><em>Undefined symbol: _OBJC_METACLASS</em>$_UIWindow<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIWindow<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIImage<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIStoryboard<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIDevice<br>Undefined symbol: <em>UIKeyboardFrameEndUserInfoKey </em><br><em>Undefined symbol: _UIApplicationDidBecomeActiveNotification </em><br><em>Undefined symbol: _UIWindowLevelNormal </em><br><em>Undefined symbol: _UIKeyInputDownArrow </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_UIView<br>Undefined symbol: <em>UIKeyInputRightArrow </em><br><em>Undefined symbol: _OBJC_CLASS</em>$_UIImageView<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIScreen<br>Undefined symbol: <em>OBJC_METACLASS</em>$_UIViewController<br>Undefined symbol: <em>OBJC_CLASS</em>$_UIViewController<br>Undefined symbol: _UIKeyInputUpArrow<br>Undefined symbol: _CGSizeFromString<br>Undefined symbol: _UIKeyInputLeftArrow<br>Undefined symbol: _UITrackingRunLoopMode<br>Undefined symbol: _UIApplicationMain</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/building-sdl2-projects-for-ios-with-xcode-11/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3607</post-id>	</item>
		<item>
		<title>Stained Glass MAME Marquee</title>
		<link>https://jstookey.com/stained-glass-mame-marquee/</link>
					<comments>https://jstookey.com/stained-glass-mame-marquee/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sun, 20 Jan 2013 06:34:52 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=934</guid>

					<description><![CDATA[My mother does a lot of craft work with stained glass (check out her store at www.bethanddon.com. I woke up one morning realizing that I aught to ask her to [&#8230;]]]></description>
										<content:encoded><![CDATA[
My mother does a lot of craft work with stained glass (check out her store at <a href="https://web.archive.org/web/20090228055035/http://www.bethanddon.com/">www.bethanddon.com</a>. I woke up one morning realizing that I aught to ask her to make a Mame marquee out of stained glass for my arcade cabinet. First I tried drawing out a few designs. They looked really difficult to do because I wasn't thinking about the fact that it's stained glass. I scoured the internet for ideas, and found <a href="http://web.archive.org/web/20010218050104/http://members.nbci.com/putman/rotomame.html">
Jim's Robby Roto Mame Machine</a> with a stained glass marquee. He had a really simple yet perfect design for a mame marquee. I emailed him, and he said he didn't mind if I used his design.<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/marquee_rotomame.jpg"></center>
		<br>
		I spoke to my mother about the idea and she was excited about it so I whipped up the design.<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/marquee_pattern_small.gif"></center>
		<br>
		When I searched through her glass collection, I realized that most of her glass 
		is made to be transparent. I couldn't find colors that would work well with a 
		fluorescent lamp behind it. My mother was looking to order some new glass 
		anyway, so I looked at some websites to find some I liked. Pictures on the 
		internet couldn't tell me how the different glasses would look with a bright 
		light behind it. My mother didn't really have to have her arm twisted for us to 
		all hop in the car and drive (5 hours each way) to the super-stained-glass 
		warehouse in Pennsylvania.<br>
		<br>
		It was tough to find colors that would look good when backlit, but finally I 
		found them and I think they look great (item #'s from left to right: KOKOMO 
		979-31D, KOKOMO 979-622D, WISSMACH 976-51G):<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/marquee_glass_ltblue-KOKOMO_979-31D.jpg" border="1"><img decoding="async" src="/arcade/marquee/marquee_glass_dkblue-KOKOMO_979-622D.jpg" border="1"><img decoding="async" src="/arcade/marquee/marquee_glass_white-WISSMACH_976-51G.jpg" border="1"></center>
		<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/marquee_pattern_small_color.JPG"></center>
		<br>
		Here's the finished product:<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/marquee2.jpg"></center>
		<br>
		...and a shot of it in the cabinet:<br>
		<br>
		<center><img decoding="async" src="/arcade/marquee/cab.jpg"></center>
		<br>
		<br>
		Download the printable version of the pattern <a href=/arcade/marquee/marquee_pattern_large+sm_color.zip>here</a>.<br>
		</center>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/stained-glass-mame-marquee/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">934</post-id>	</item>
		<item>
		<title>Dragon Warrior World Map</title>
		<link>https://jstookey.com/dragon-warrior-world-map/</link>
					<comments>https://jstookey.com/dragon-warrior-world-map/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sat, 31 Mar 2012 20:51:06 +0000</pubDate>
				<category><![CDATA[Everything Else]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://3.89.202.203/index.php/2012/03/31/dragon-warrior-world-map/</guid>

					<description><![CDATA[Google has added a map of the world in none other than Dragon Warrior graphics. This is the best April Fools day present I ever got. This comes at perfect [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><center></center>Google has added a map of the world in none other than Dragon Warrior graphics. This is the best April Fools day present I ever got.</p>
<p><center><iframe loading="lazy" src="https://www.youtube.com/embed/rznYifPHxDg" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></center>This comes at perfect timing in my own life. It just so happens that I have been working my way through the Dragon Warrior games for the last few months on my Android phone, and am currently in the middle of Dragon Warrior 3. I would totally dance a jig right now, but I don't want to lose all my magic points.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/dragon-warrior-world-map/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">130</post-id>	</item>
		<item>
		<title>Blender to Dreamcast</title>
		<link>https://jstookey.com/blender-to-dreamcast/</link>
					<comments>https://jstookey.com/blender-to-dreamcast/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Wed, 10 Jan 2007 01:35:40 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=1100</guid>

					<description><![CDATA[Importing 3d objects into the DC I have been playing around with making video games on the Dreamcast. I wanted a way to create and import 3d models into the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Importing 3d objects into the DC</h2>



<table class="wp-block-table"><tbody><tr><td>I have been playing around with making video games on the Dreamcast.  I wanted a way to create and import 3d models into the Dreamcast.  I ended up writing my own export script for the Open Source 3D modelling program "Blender".  Also, I wrote c++ class to import the 3d model into the Sega Dreamcast using KallistiOS and the KGL libraries (KGL provides very basic OpenGL functionality).  This page provides some source code and my export script that could hopefully be useful for other people looking to do the same thing.</td><td><center><figure><img decoding="async" src="https://jstookey.com/dreamcast/dc.jpg"></figure></center></td></tr></tbody></table>



<h3 class="wp-block-heading">Why the Dreamcast?</h3>



<p>
The Sega Dreamcast has excellent Open Source tools for developing games on the system.  The existence of KallistiOS and the gcc compiler for the Dreamcast mean that I can create whatever games I can dream up without worrying too much about licensing Official Dev Kit platforms that are generally reserved for big video game companies.  The Dreamcast is great for this purpose because it can run the games off an ordinary CD-ROM without the use of a mod chip, so I can hand the game to my friends and they can play it.

</p>



<h3 class="wp-block-heading">Blender</h3>



<p>
I'm just getting started with 3-d modelling.  I tried a few different pieces of software (Wings-3D, Maya educational version) before commiting to Blender.  Blender was intimidating to me at first because when I loaded it up, I didn't intuitively know what do to.  However, once I decided to give Blender a chance, it turned out to be really easy to work with, you just gotta go through a few quick tutorials first.</p>



<p>

I took a Blender VRML '97 export script (written by Rick Kimball, Ken Miller, Steve Matthews, and Bart) and transformed it into something that exports a model into my own format.  VRML had a lot of the features that I wanted, but I didn't have a good way of parsing the VRML file into the Dreamcast, so I wanted a binary format. It would probably be better to have learned an existing format and loaded that instead of creating my own, but for now this was the easiest way for me to get started.  Here are the features that the script supports:</p>



<p>
- The script exports a UV-textured 3d model, with some support for animations.<br>
- The script exports to Jake Format (.jfm), my own simple format.<br>
- Multiple Blender objects can be exported together into a single .jfm file.<br></p>



<h3 class="wp-block-heading">Dreamcast</h3>



<p>
I'm using Cryptic Allusions' KallistiOS KGL library to display the 3D image.  The texture is loaded as an indexed 256-color .pcx file that I created using the Gimp.  The program loads the .jfm file and the .pcx texture, and displays the animation.  You can rotate the model using the analog stick.  The code is suprisingly brief and clean, so it should be easy to understand and learn from.<br></p>



<h3 class="wp-block-heading">Linux</h3>



<p>
The program also can be compiled for Linux using the Glut library.  On my system, "make linux" builds the a.out executable for me.  I'm using  David Henry's pcx.c pcx file importer to load the textures.  You can rotate the model using the mouse.<br></p>



<h3 class="wp-block-heading">Other operating systems</h3>



<p>
It should be easy to compile the code for other systems that have the glut library.  It should hopefully compile much like the Linux version.  If you get it working on another operating system and you want to send me the result, I'd be glad to post it here.<br></p>



<h3 class="wp-block-heading">Downloads:</h3>



<p><a href="https://jstookey.com/dreamcast/kglblender.tar.gz">kglblender.tar.gz</a> (~1.8M)</p>



<p>
&nbsp;&nbsp;&nbsp;Here is a brief description of the important files:</p>



<p></p>



<table class="wp-block-table"><tbody><tr><td>blender/jakeformat.py</td><td>The .jfm (Jake format) export script.  Under linux, I put this file in my home directory under ".blender/scripts", and Blender added .jfm as an export menu option.</td></tr><tr><td>blender/dreamcast.blend</td><td>Blender object file.  Load blender, and open this file.  It's a model of a Sega Dreamcast.  Alt-A should show the animation.  File-Export-&gt;Jake Format (.jfm) will export the file.</td></tr><tr><td>blender/dreamcast.jpg</td><td>The texture file for the blender model.</td></tr><tr><td>kglgame/kglgame.cc</td><td>The main program file.  This mostly just sets up the opengl stuff, and calls on the object3d object to load and display.</td></tr><tr><td>kglgame/Makefile</td><td>You may have to edit this file a little to compile for your system.  Some good commands to use are "make" to build the dc elf, and "make linux" to create a linux "a.out" executable.</td></tr><tr><td>kglgame/drawables/object3d.cc</td><td>This does the loading and displaying of the .jfm file.</td></tr><tr><td>kglgame/romdisk/dreamcast.jfm</td><td>This is the exported Dreamcast animation that gets displayed by the program.</td></tr><tr><td>kglgame/romdisk/dreamcast.pcx</td><td>This is the texture image that gets loaded by the program to go with the .jfm file.</td></tr><tr><td>kglgame/a.out</td><td>A linux executable.  This requires the romdisk/ folder to be in the same directory as a.out.</td></tr><tr><td>kglgame/kglgame.elf</td><td>A Dreamcast .elf file.  This file contains all the data, so the romdisk folder is not required in this case.  Just upload kglgame.elf to the dreamcast and run it to see the animated Dreamcast display.</td></tr></tbody></table>



<h3 class="wp-block-heading">Software Versions</h3>



<p>
Here are the versions of the different programs that I created this stuff with:</p>



<p> Blender-2.41<br> binutils-2.15<br> newlib-1.12.0<br> gcc-3.4.1<br> Kallistios-1.3.0</p>



<h3 class="wp-block-heading">Links</h3>



<p><a href="http://cadcdev.sourceforge.net/softprj/kos/">KallistiOS Site</a><br><a href="http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro">Blender 3D: Noob to Pro</a> - Great place to get started working in Blender<br><a href="http://www.blender3d.org/_media/education/quickstart/Texturing_Castle.html">Texturing a Castle Tutorial</a> - Learn Blender UV Texture Mapping<br><a href="http://www.elephantsdream.org/">Elephants Dream</a> - a cool animated feature made using Blender.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/blender-to-dreamcast/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1100</post-id>	</item>
		<item>
		<title>Wells Gardner 25k7191 Arcade Monitor</title>
		<link>https://jstookey.com/wells-gardner-25k7191-arcade-monitor/</link>
					<comments>https://jstookey.com/wells-gardner-25k7191-arcade-monitor/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sun, 16 Nov 2003 04:00:00 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=863</guid>

					<description><![CDATA[I'm putting this page up because I had a few small problems while using my Wells Gardner WGk7191 arcade monitor in my Mame cabinet. It appears that a few other [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I'm putting this page up because I had a few small problems while using my Wells Gardner WGk7191 arcade monitor in my Mame cabinet.  It appears that a few other people have run into the same problems, so I thought I'd keep the information here for people to find.<br><br> I am using the monitor with a VGA cable hack with the ArcadeVGA video card from Ultimarc.  When I tried to run Windows 98 at 800x600 or 640x288, the display wouldn't look right.  At the bottom of the screen, there was a fold where the screen would curl, and in effect I was losing the bottom part of the screen.  This affected Mame games that run at certain resolutions also and runnig Windows at 800x600 or 640x288 (640x480 worked fine).  On the Ultimarc message board, someone mentioned that they had fixed this same problem.  (Note: this also affected certain games when I was running my monitor with the Trident Blade T64 card with AdvanceMame.)</p>



<p></p>



<b><font color="green">FUSE:</font></b>



<p>
I pulled out the fuse and took a look at it.  The fuse in my monitor is "2A 250VAC".  On the fuse, it also says, "BEL 3 SB".  The monitor's circuit board where the fuse plugs in has "2A 250VAC" printed on it.  There are little icons on the fuse for "SB" and "UL".  I think that the  "SB" stands for Slow Blow.</p>



<p></p>



<hr class="wp-block-separator"/>



<p>
Click the thumbnails for full-size pictures.
</p>



<figure class="wp-block-table"><table><tbody><tr><td><figure><a href="/arcade/WG_25k7191/WG_25k7191_diagram.JPG"><img decoding="async" border="0" src="/arcade/WG_25k7191/WG_25k7191_diagramtn.JPG"></a></figure></td><td>Here's a picture of the diagram that is printed on the back of my k7191 monitor.</td></tr><tr><td><figure><a href="/arcade/WG_25k7191/k7191-complete_lg_.jpg"><img decoding="async" border="0" src="/arcade/WG_25k7191/k7191-complete_lg_tn.jpg"></a></figure></td><td>The schematics diagram for the Wells-Gardner Model 25K7191.</td></tr><tr><td><a href="/arcade/WG_25k7191/wg-k7000.pdf">K7000 Monitor Manual (pdf)</a></td><td>I finally got my hands on the manual for the k7191.  It's in pdf format, and actually the manual is for the k7000.  However, Wells Gardner sent it to someone for use with the k7191, so I am assuming that this is the correct manual.  <font color="green"><br><br><b>NOTE:</b> The schematics diagram in this manual mentions that the diagram is for the 9k7700, 13k7800, 19k7600, and 19k7900 monitors and to "Refer to other schematic diagrams for certain unique models.".  See the next image for the 25k7191 schematics.</font></td></tr><tr><td><figure><a href="/arcade/WG_25k7191/WG_25k7191_pot_close_up.JPG"><img decoding="async" border="0" src="/arcade/WG_25k7191/WG_25k7191_pot_close_uptn.JPG"></a></figure></td><td>Here's close-up of a picture of the pot that I adjusted to fix the curling problem.  Note that you need a screwdriver or something to adjust it.  It almost doesn't look like a pot at all (to me, but I'm not experienced with this stuff at all).</td></tr><tr><td><figure><a href="/arcade/WG_25k7191/WG_25K7191_pot_zoom_out.JPG"><img decoding="async" border="0" src="/arcade/WG_25k7191/WG_25K7191_pot_zoom_outtn.JPG"></a></figure></td><td>Here's a zoom-out of the same pot.</td></tr><tr><td><figure><a href="/arcade/WG_25k7191/WG_25K7191_output.JPG"><img decoding="async" border="0" src="/arcade/WG_25k7191/WG_25K7191_outputtn.JPG"></a></figure></td><td>Here are the outputs for the monitor cable.  These are the wires that need to be spliced to a VGA monitor cable hack for use with the ArcadeVGA PC video card from Ultimarc.  Note that I also added a vsync wire to my VGA cable hack.  This is required in order to use the Act Labs PC USB Light Gun with the arcade monitor.</td></tr><tr><td><figure><a href="/arcade/WG_25k7191/iso_trans_b2bw2r.jpg"><img decoding="async" border="0" src="/arcade/WG_25k7191/iso_trans_b2bw2r_tn.jpg"></a></figure></td><td>My monitor gets power from the black and white wires.</td></tr><tr><td><figure><a href="/arcade/WG_25k7191/iso_trans_labelled.jpg"><img decoding="async" border="0" src="/arcade/WG_25k7191/iso_trans_labelled_tn.jpg"></a></figure></td><td>These wires go into my isolation transformer, then back out to a wall plug.</td></tr></tbody></table></figure>



<h3>Wgk7191 Monitor - Strange Circuitboard</h3>

This circuitboard is screwed to monitor case, but isn't wired to anything.  I wonder what it's for?<br><br>



Somebody's asking about it, so I thought I'd post some detailed pictures.  Maybe I can find out what it is.<br><br>



<table border=1>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_attached.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_attached_tn.jpg" border=0></a></td><td>The circuit board connected to the monitor.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_topview.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_topview_tn.jpg" border=0></a></td><td>Large top view of the circuit board.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_sm_top_view.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_sm_top_view_tn.jpg" border=0></a></td><td>Smaller top view of the strange circuit board.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_overhead_angle.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_overhead_angle_tn.jpg" border=0></a></td><td>Angled view.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_underside.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_underside_tn.jpg" border=0></a></td><td>Shot of the underside.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading1.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading1_tn.jpg" border=0></a></td><td>Hopefully you can read the capacitors.</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading2.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading2_tn.jpg" border=0></a></td><td>..</td></tr>

<tr><td><a href="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading3.jpg"><img decoding="async" src="/arcade/WG_25k7191/monitor_circuit/mc_cap_reading3_tn.jpg" border=0></a></td><td>..</td></tr>

</table>



<p>
Note:<br></p>



<font color="green"><b>Act Labs USB PC Light Gun is now working!</b></font>



<p>
Andy Warne at <a href="http://www.ultimarc.com">Ultimarc</a> has been running some tests with the Act Labs gun and arcade monitors.  He discovered that if you use an arcade monitor and you splice the hsync and vsync wires together in your VGA cable hack, then the light gun won't work.  I added a wire to my monitor's output cable for the vsync, and wired it correctly to the video card, and now I'm playing gun games on my cabinet.  Sweet!  By the way, according to Andy, this fact is true no matter what kind of video card you are using.<br><br>
Here are some useful links:
</p>



<figure class="wp-block-table"><table><tbody><tr><td><a href="http://www.arcadecontrols.com">BYOAC</a></td><td>The build your own arcade controls has very good info on all aspects of building arcade machines.  If you have any questions, there are many helpful people in the messsage board.  There is also a lot of info in the huge FAQ there.</td></tr><tr><td><a href="http://www.ultimarc.com">Ultimarc's web site</a></td><td>This is where the ArcadeVGA card was created - totally awesome for connecting an arcade monitor to your Mame computer.</td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/wells-gardner-25k7191-arcade-monitor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">863</post-id>	</item>
		<item>
		<title>Multiple Mice in Windows using Raw Input</title>
		<link>https://jstookey.com/multiple-mice-raw-input/</link>
					<comments>https://jstookey.com/multiple-mice-raw-input/#comments</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Fri, 12 Sep 2003 03:43:14 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=876</guid>

					<description><![CDATA[Raw Input is a Microsoft API that provides applications a way to accept raw input from any HID, including the keyboard and mouse. Prior to Windows XP, Microsoft supported using [&#8230;]]]></description>
										<content:encoded><![CDATA[
<body topmargin="3" leftmargin="3">
<center><img src=/arcade/rawmouse/8_mice.jpg></center>
Raw Input is a Microsoft API that provides applications a way to accept raw input from any HID, including the keyboard and mouse. Prior to Windows XP, Microsoft supported using multiple mice independently with DirectX, however this method of using multiple mice was removed in Windows XP and newer. The new alternative is to use Raw Input, or Raw Mouse. The primary goal was to support multiple mice and lightguns in MAME, the Multiple Arcade Machine Emulator, but in the process a generic API was created that can be used in any application. This page provides source code and other information on using Raw Input for the following purposes:<br><br>
Multiple mice in Windows XP<br>
Multiple mice in Windows Vista<br>
Multiple mice in Windows 10<br>
Multiple relative input devices such as lightguns<br>
Multiple keyboards<br>

<h2>DOWNLOADS</h2>
<h4>Sample Raw Input Code</h4>
<b><font color=green>NOTE: These will only run properly under Windows XP or newer.</font></b> 
<table border=1>
<tr>
  <td><a href="/arcade/rawmouse/raw_mouse.c">raw_mouse.c</a><br><a href="/arcade/rawmouse/raw_mouse.h">raw_mouse.h</a><br><a href="/arcade/rawmouse/raw_mouse_test.c">raw_mouse_test.c</a><br><a href="/arcade/rawmouse/raw_mouse_test.exe">raw_mouse_test.exe</a></td>
  <td><b>My raw mouse api: </b>Here are C source files that you can include in your own C or C++ programs to make using raw mouse very easy.  Also included is a demo that shows the features of the package.  This is meant to be useful if you are trying to use raw input for your own applications.  Compiling instructions are included in the .c file using either Gcc/Mingw or Visual C++.</td>
</tr>
<tr>
  <td><a href=/arcade/rawmouse/rawinputsharp.zip>rawinputsharp.zip</a></td>
  <td><b>C# version of rawmouse</b>&nbsp;&nbsp;Thanks to Peter Brumblay, rawinput has been ported to C#!  Here are the source files and binaries (dll and demo exe).  Visual Studio .net 2003 project files are included.  You will need the .net runtimes and Windows XP (or newer) to run these programs.  Building them may (or may not) require that you download the Microsoft Platform SDK (see links above).<br><br><img src=/arcade/rawmouse/peteremail.PNG></td>
</tr>
<tr>
  <td width=200><a href="/arcade/rawmouse/HelloRawInput.c">HelloRawInput.c</a><br><a href="/arcade/rawmouse/HelloRawInput.exe">HelloRawInput.exe</a></td>
  <td>Here is a minimal Raw Input program written in the C programming language.  It displays the number of rawinput devices on your machine.  It is a good program to use when getting your rawinput programming environment set up.  Compiling instructions are included in the .c file using either Gcc/Mingw or Visual C++.<br></td>
</tr>

<tr>
  <td><a href="/arcade/rawmouse/ShowMultipleMiceValues.c">ShowMultipleMiceValues.c</a><br><a href="/arcade/rawmouse/ShowMultipleMiceValues.exe">ShowMultipleMiceValues.exe</a></td>
  <td>PacManFan's program (translated to C from the original C++).   Displays the movements for all of the mice on the screen.  When you run the program, pay attention to the first value (hDevice) - it identifies which mouse the information represents.  I missed it the first time I ran it.  It displays A LOT of info about the mice, which is very useful for figuring out how to interpret different devices (it was great for figuring out the lightgun).  Compiling instructions are included in the .c file using either Gcc/Mingw or Visual C++.</td>
</tr>

<tr>
  <td><a href="/arcade/rawmouse/ListRawInputDevices_vc++.zip">ListRawInputDevices_vc++.zip</a><br><a href="/arcade/rawmouse/ListRawInputDevices.exe">ListRawInputDevices.exe</a></td>
  <td>(Visual C++ Workspace)  This is a useful program that lists all of the raw input devices on your computer.</td>
</tr>

<tr>
  <td><a href="/arcade/rawmouse/rawmameanalogxpfilesV1.zip">Mame Analog+ Raw Mouse source code (version 1)</td>
  <td>Here are my source code changes that make use of raw mouse in Windows XP.  It supports multiple mice with buttons, and also lightguns under Windows XP.  They should be applied to the MameAnalog+ version 74 source code.</td>
</tr>
</table>

<h2>LINKS</h2>
<table border=1>

<tr>
  <td width=200>Microsoft Platform SDK</td>
  <td>This package contains the headers & libraries needed to compile raw input stuff with visual c++ 6.0.  You don't actually need all that stuff, just a few files.</td>
</tr>

<tr>
  <td><a href="https://docs.microsoft.com/en-us/windows/desktop/inputdev/raw-input">Raw Input on MSDN</a></td>
  <td>Combined with some working code samples, this is a good reference about what Raw Input offers.</td>
</tr>

<tr>
  <td><a href="http://hp.vector.co.jp/authors/VA000092/win32/GenericInput.html">Japanese Raw Input source</a></td>
  <td>This is what finally got me successfully compiling raw input stuff.  (<a href=/arcade/rawmouse/japanese_raw_input_translation.html>Translated to english</a> thanks to <a href=http://dictionary.reference.com/translate/text.html?lp=ja_en&r=0>Dictionary.com</a>)</td>
</tr>

</table>


<h3>NOTES:</h3>

<b>Converting libraries from Microsoft Platform SDK to MinGW/GCC:</b><br>
I couldn't believe it, but MinGW was able to use the Microsoft Platform SDK libraries, but it required some work on my part.  Let me first admit that I never thought this would work, but my will was strong, and it turned out to be easy.  First, I ran a program called, "reimp" (part of MinGW tools) on the MS Platform SDK "user32.lib" file.  Reimp created my "libuser32.a".  I replaced "libuser32.a" in my existing MinGW lib directory.  Next, I moved the WinUser.h file into my MinGW include folder.  I ran into 2 problems:<br><br>

1) When I tried to include "winuser.h" into my programs, I got some compiler errors from "winuser.h" itself, so I made some very minor changes to the .h that might have been a little bit sketchy.  With a few small changes, it compiled successfully.<br><br>
2) Next, when I tried access certain features from the old version of "winuser.h" from existing programs (namely the existing Mame source), I got compiler errors again.  I was able to copy lines from the old "winuser.h" into the new one to get it to work.  Here's a specific example:<br><i>

When compiling mame with the new winuser stuff for MinGW/GCC I was getting a compiler error: "GetLastError undeclared" (or something like that).  I added a GetLastError line to the WinUser.h file, and wouldn't you know it?  Mame compiled and ran without any noticeable problems!  Now I aught to be able to freely add rawmouse code into Mame and compile it and test it.</i><br><br>

<font color=green>The bottom line is that some functionality from any converted libraries is probably missing, and will somehow need to be added if you want to access more than what Mame and my programs use.</font><br><br>

<b>RDP_MOU</b> (Terminal services devices)<br>
When raw input enumerates mice and keyboards, it enumerates all the mice, keyboards, and joysticks that I have connected to my system.  In addition, it enumerates one extra root device (a mouse) identified as "RDP_MOU".  It also enumerates a similar keyboard device.  These appear to be the Windows remote mouse and keyboard that are accessed with Terminal Services.
<br><br>
<!--
<b>Running on non-winxp</b><br>
I tried running it on Windows98 just to see how tragic it would be, and a few message boxes came up warning me that the functions couldn't be found in user32.dll.  This occurs if Windows tries to run the .exe, EVEN IF IT DOESN'T TRY TO RUN THE ACTUAL RAW MOUSE CODE.  The program stopped, and that was it.  Nothing too horrible.  I heard that the WinXP only version of Mame was able to run on Windows 2000 as long as the raw mouse functionality wasn't accessed.<br><br>
-->

<b>Note to self</b><br>
Upload buffered read stuff for dual mice.  Also for duel mice.<br><br>

<font color=green><b>NOTE FOR MAME USERS: The Mame modifications explained here have been merged with the official version of Mame.  If you are looking to use multiple trackballs, spinners, and lightguns in Mame using Windows XP then look no further than the official Mame page!
<br><br>SUBNOTE FOR MAME USERS: Mame Analog+ supports Raw Mouse for some older versions of Mame, however it hasn't been updated in a while.  AdvanceMame also supports multiple mice using RawInput.</b></font><br><br>

This has become an issue because some of the members of <a href=http://www.arcadecontrols.com>Build Your Own Arcade Controls</a> message board and I are stuck running crappy old Windows 95/98/ME on our Mame cabinets if we want to use multiple trackballs to play such great games as Marble Madness (2 trackballs), Rampart (3 trackballs), or Atari Soccer (4 trackballs).  Lightguns are affected by the same problem, because Windows treats lightguns as mice (for the most part).<br><br>

<h2>NEWS</h2>
<b>2006-03-09<br>
RawMouse is now available in the official build of Mame!  Woohoo!</b><br>

Derrick Renaud has reworked the code from this site so that it fits cleanly into the official version of Mame.  Multiple mice can now be enjoyed without using unofficial Mame versions.  This is great news - The ultimate goal of this page has been accomplished.  Read the announcement <a href="https://web.archive.org/web/20070110003029/http://www.emuunlim.com/cgi-bin/wwwthreads/showpost.pl?Board=mamegeneral&Number=190725&page=0&view=expanded&mode=flat&sb=7">here</a>.  Get Mame from <a href=http://www.mame.net>here</a>.

<br><br>
<b>2006-03-05<br>
Fixed a bug introduced when compiling with the latest MS compilers (MS VC++ Express 2005 in particular).</b><br>
It looks like the wm_input messages
are not reporting the relative mode flag anymore (raw->data.mouse.usFlags & MOUSE_MOVE_RELATIVE).  It looks to me as though I'm supposed to assume it's a relative device unless wm_input reports otherwise. That's an easy fix.  In raw_mouse.c, in the function init_raw_mouse, initialize is_absolute to 0 for the sys_mouse and currentmouse.  I have updated the source code (raw_mouse.c and raw_mouse_test.exe) with the small addition.  While I was at it, I initialized is_virtual_desktop to 0.<br><br>

<b>2005-10-01<br>
Rag Doll Kung Fu has been released on Steam.</b><br>
Rag Doll Kung Fu, an exciting new game that uses the raw input code from this site, is now available for download through Steam!  Enjoy playing with as many as 8 players using multiple mice!  Find out more <a href="https://web.archive.org/web/20060202124328/http://ragdollkungfu.com/">here</a>.<br><br><center><a href="https://web.archive.org/web/20060202124328/http://ragdollkungfu.com/"><img border=0 src=/arcade/rawmouse/shot8.jpg></a></center><br><br>

<b>2005-04-24<br>
MinGW now supports rawinput!</b><br>
There is no longer a need for my winuser header/lib, because MinGW has them built-in.  I updated the source files to work with the new MinGW from the Mame website.<br><br>

<b>2004-09-03<br>
Rawmouse C# Port!</b><br>
Peter Brumblay has ported the rawmouse code to C#!  It consists of a dll and a demo program.  As of right now, it will not support "absolute" devices such as lightguns and touchscreens.  You can email him at:<br><br> <img src=/arcade/rawmouse/peteremail.PNG><br><br>
See the downloads section for the files.<br><br>

<b>2004-04-23</b><br>
Made a small change to yesterday's raw mouse api (raw_mouse.h, raw_mouse.c, and raw_mouse_test.c) update.  I made OS detection a part of init_raw_mouse instead of making a separate function.<br><br> 

<b>2004-04-22</b><br>
<b>Include RawMouse in an application without crashing under unsupported versions of Windows!</b><br>
 I have updated my raw mouse api (raw_mouse.h, raw_mouse.c).  An exe will now run on versions of Windows that support raw input and versions that don't!  The test program (raw_mouse_test.c) will now detect whether rawinput is available and exits gracefully instead of crashing.  With this code, Mame Analog+ won't need 2 separate builds (one for Windows9x and one for Windows XP and newer) because it can detect which method of mouse input is available and choose accordingly.<br><br>

The code was very kindly sent to me by Mark Healey and Alex Evens at Lionhead Studios.  Mark emailed me awhile back because he's using my rawmouse code for his up-and-coming game, "Rag Doll Kung Fu".  He has added support for up to 8 players using separate mice on a single machine.  Sounds like a real mess!  The game looks really incredible.  You can check out the press release <a href="https://web.archive.org/web/20040325203858/http://www.lhtimes.com/ragdoll.html">here</a>, or go to the game's main website at <a href="https://web.archive.org/web/20060202124328/http://ragdollkungfu.com/">www.ragdollkungfu.com</a>.<br><br>

<center><a href="https://web.archive.org/web/20040325203858/http://www.lhtimes.com/ragdoll.html"><img src=/arcade/rawmouse/ragdollkungfu.jpg border=0></a><br><br></center>

<b>2003-10-02</b><br>
<font color=green><b>(2006 UPDATE: StarRoms is no longer providing the following service).</b></font><br><br>
Great news! Atari (now owned by Infrogrames) has agreed to make their old arcade game roms available for purchase for use with Mame. This means that you can purchase copies of many of the multiple mouse Mame roms to play in your home!  <br><br>Some of the games include Atari Football (4 trackballs), Atari Soccer (4 trackballs), Rampart (3 trackballs), Blasteroids (2 spinners), Marble Madness (2 trackballs), Warlords (4 paddles), and many more.<br><br>

Most of these games have been available in the past in such packages as the <a
href="https://web.archive.org/web/20040301040941/http://www.digitaleclipse.com/live/main/main.php?v=pi&sort=p">Digital
Eclipse Arcade Collections</a>, but this is
different because it is specifically being sold to be used with whichever emulator you choose, such as Mame: Analog+ XP with support for multiple trackballs!<br><br>

<b>2003-09-25</b><br>
Hooray!  Multiple mouse and lightgun support is now available for users of Windows XP in Mame: Analog+.<br><br>


  Features:<br><br>
    - Multiple Mouse Support (mameanalog -mouse -multimousexp soccer)<br>
    - Multiple Lightgun Support (mameanalog -lightgun -multimousexp policetr)<br>
    - -switchmouse, -switchaxes, -onemouse, -splitmouse, -resetmouse all work<br>
    - Support for 3 mouse buttons<br>
    - In Windowed mode, I attempt to acquire the mouse, but it's still possible to break out using <br>
         a small window, quick button presses, and fast fingers<br><br>

<b>2003-09-18</b><br>
Updated the source to be compatible with Mame74.  A few small changes, and it's ready to rock.<br><br>

<b>2003-9-18</b><br>
Raw lightgun support for Mame!  The raw mouse Mame code has been updated to work with one lightgun and <i>should</i> work with multiple lightguns.  I can't test multiple because I only have one Act Labs PC USB Light gun.  If it doesn't happen to work it'll be easy to fix.<br><br>

<b>2003-9-15</b><br>
Raw mouse buttons for Mame!  Finally something worth mentioning!<br><br>

<b>2003-9-12</b><br>
Multiple raw mice in Mame!  I created an interface raw_mouse.h and raw_mouse.c which can be included into c program very easily.  I hacked the MameAnalog+ code (quick and dirty) to make use of this new raw_mouse interface, and it wasn't long before I got 4 mice to work in Mame using WindowsXP.  <br><br>

<b>2003-9-11 11:40pm</b><br>
I updated the MinGW/GCC lib and header files for "winuser.h" with a version that will successfully compile a runable Mame.<br><br>

<b>2003-9-11 5pm-ish</b><br>
I managed to convert the raw input header and library files from the Microsoft Platform SDK (namely WinUser.dll/user32.lib/winuser.h) into something that MinGW/GCC can use.   I converted PacManFan's program from C++ to C so that it will compile with the Mame MinGW compiler package (plus the updated winuser stuff)  instead of Visual C++. <br><br> 
<b>2003-9-11 Noon-ish</b><br>
PacManFan sent me his C++ demo which displays mouse data for multiple mice via rawmouse.  Thanks Steve!<br>



<hr>
I gotta love those flowered Barbie USB mice (99 cents apiece!!!)  I wish I knew how useful they would be when I got them.  Whoda thought I'd regret not buying more of them - I figured 20 would be enough.<br><br>
<center><img src=/arcade/rawmouse/8_mice.jpg></center>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/multiple-mice-raw-input/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">876</post-id>	</item>
		<item>
		<title>Defender Control Panel for MAME</title>
		<link>https://jstookey.com/defender-control-panel-for-mame/</link>
					<comments>https://jstookey.com/defender-control-panel-for-mame/#respond</comments>
		
		<dc:creator><![CDATA[jstookey]]></dc:creator>
		<pubDate>Sat, 19 Jan 2002 06:13:20 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video Games]]></category>
		<guid isPermaLink="false">http://jstookey.com/?p=923</guid>

					<description><![CDATA[I'm working on this for a friend who really likes Defender. It will be a desktop controller, except that it will only be useful for Defender and Stargate. It sports [&#8230;]]]></description>
										<content:encoded><![CDATA[
<center><figure><a href="/arcade/defendercp/defendercp_lg.jpg"><img decoding="async" border="0" src="/arcade/defendercp/defendercp.jpg"></a></figure></center>



<p>
I'm working on this for a friend who really likes Defender.  It will be a desktop controller, except that it will only be useful for Defender and Stargate. It sports a Lexan (plexiglass) cover and T-Molding around the outer border.
The control panel uses a keyboard hack from a blue Hot Wheels USB keyboard.  I gathered a couple of low-ish resolution images of Defender control panels from the internet and put some pieces together to make it look ok with the extra buttons (the Stargate 'Inviso' button and the '25 cents' button).  I printed it out on ordinary paper and put it under the lexan.</p>



<p>

I used a two-way joystick. The 'Reverse' button would be difficult to reach if I were to use a larger 4-way joystick because the base for a regular joystick is so wide.</p>



<p></p>



<h3 class="wp-block-heading">LIST OF INGREDIENTS</h3>



<table class="wp-block-table"><tbody><tr><td><b>Item</b></td><td><b>Source</b></td><td><b>Price</b></td></tr><tr><td>T-Molding 6'</td><td><a href="http://www.t-molding.com">T-Molding Dot Com</a></td><td>$2.22</td></tr><tr><td>Giant sheet of 3/4" Plywood</td><td>Lowe's</td><td>$7.57</td></tr><tr><td>Wood Screws (Tons of 'em)</td><td>Lowe's</td><td>$3.57</td></tr><tr><td>Hardboard (Huge sheet)</td><td>Lowe's</td><td>$1.99</td></tr><tr><td>Buttons (9)</td><td><a href="http://www.happcontrols.com">Happ Controls</a></td><td>$16.20</td></tr><tr><td>Joystick (2-Way Defender Reproduction)</td><td><a href="http://ebay.com">Ebay</a></td><td>$10.00+s/h</td></tr><tr><td>Small sheet of Lexan</td><td>Lowe's</td><td>$7.57</td></tr><tr><td>Blue USB Hot Wheels Keyboard</td><td>package2you.com</td><td>$1.99</td></tr><tr><td>Glue, tape, black paint &amp; white primer</td><td>Around the house</td><td>---</td></tr><tr><td>A lot of wire</td><td>???</td><td>???</td></tr></tbody></table>



<h3 class="wp-block-heading">IMPORTANT NOTES</h3>



<b>USB KEYBOARD HACKS</b>



<p> - 
I have read that USB keyboards are a bad choice for doing a keyboard hack because they are limited to 6 keys being pressed at one time (and the Operating System enforces it because it's a part of the USB standard, I believe).  Generally it will be possible to use more inputs with a ps/2 keyboard.  However, with this control panel 6 simultaneous button pressed should be enough.</p>



<p></p>



<b>SPELLING ERROR</b>



<p> - 
On my control panel I mispelled 'Inviso' by typing 'Invisio'.  I don't mind, but I fixed it in the version that is in the download section (below).</p>



<p></p>



<b>PAPER OVERLAY</b>



<p> -  Printing the overlay on paper is cheesy.  It's paper.  I glued 4 sheets of computer paper together, and it looks a lot better than I expected, so I will leave it that way.  If it ages, though, then perhaps getting nice printout at Kinko's or something would be in order.</p>



<p></p>



<b>DIMENSIONS</b>



<p> - 
I initially used an AutoCAD program to give the control panel the exact dimensions of the arcade version.  However, I ended up straying from them a little when I made the overlay.  The right-hand button cluster should use the correct dimensions.  However, it's position in relation to the joystick is not quite correct, and the overall width of the panel is totally arbitrary (so it is not likely to fit in an original arcade machine).</p>



<p></p>



<h3 class="wp-block-heading">DOWNLOADS</h3>



<table class="wp-block-table"><tbody><tr><td>
		<a href="/arcade/defendercp/defendercpdesign.zip"><figure><img decoding="async" src="/arcade/defendercp/defendercpoverlay.jpg" border="0"></figure><br>Control Panel Overlay</a><font color="white"> 804k (zipped bitmap)</font>
	</td></tr><tr><td>
		<a href="/arcade/defendercp/computerfont.zip"><figure><img decoding="async" src="/arcade/defendercp/computerfont.gif" border="0"></figure><br>'Computer' font</a><font color="white"> used for panel (I found it on the internet) 20k (.ttf format)</font>
	</td></tr><tr><td>
		<a href="/arcade/defendercp/matrix.html"><figure><img decoding="async" src="/arcade/defendercp/hotwheelsusbkeyboard.gif" border="0"></figure><br>Blue Hot Wheels USB Keyboard matrix</a>
	</td></tr></tbody></table>



<h3 class="wp-block-heading">LINKS</h3>



<p><a href="http://www.arcadecontrols.com">BYOAC</a> - Build Your Own Arcade Controls: The greatest site on the web<br><a href="http://www.happcontrols.com">Happ Controls</a> - This place sells the pushbuttons (they also sell a lot of other arcade stuff)<br><a href="http://www.t-molding.com">T-Molding dot com</a> - A nice place to get t-molding<br><a href="http://www.klov.com/D/Defender.html">KLOV Defender page</a>- Some info about Defender<br><a href="http://www.arcaderestoration.com/index.asp?OPT=3&amp;CBT=66">Defender restoration</a>- Defender cabinet dimensions (including the control panel)<br><a href="https://web.archive.org/web/20060114234643/http://appolo.com/artwork/wmg_defender_instructions.htm">Multigame/Defender Control Panel</a> - a really cool defender control panel<br></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jstookey.com/defender-control-panel-for-mame/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">923</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: jstookey.com @ 2026-03-27 10:24:14 by W3 Total Cache
-->