{"id":271581,"date":"2026-09-04T00:35:35","date_gmt":"2026-09-04T00:35:35","guid":{"rendered":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/"},"modified":"2026-09-04T00:35:35","modified_gmt":"2026-09-04T00:35:35","slug":"development-session-odin-and-assembly-implementing-timers-in-flax","status":"publish","type":"post","link":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/","title":{"rendered":"Development Session &#8211; Odin and Assembly.  Implementing timers in Flax."},"content":{"rendered":"<div class=\"youtubomatic-video-container\"><iframe loading=\"lazy\" width=\"580\" height=\"380\" src=\"https:\/\/www.youtube.com\/embed\/kSKTuq2JswA?autoplay=1&#038;controls=1&#038;hl=en\" frameborder=\"0\" allowfullscreen><\/iframe><\/div>\n<p>This video shows an open and honest real-time session with one of our developers talking through the process of implementing timers within the Flax engine using the Odin programming language developed by Ginger Bill, @GingerGames  and the resultant assembly code within Flax needed to use them.  It also discusses our internal approaches, practises, methodologies, and the creation of the needed tooling required to set up such a project.  It also covers documentation and a look at the book on understanding Odin by Karl Zylinski, @karl_zylinski <\/p>\n<p>Nothing is hidden; you get to see everything, bugs, warts and all, as well as how to resolve them.<\/p>\n<p>About Flax:<br \/>\nFlax is a high-speed assembly language, compiler, and runtime engine originally designed for use in education, for teaching low-level programming concepts without the danger of bricking the machine with native assembly.<\/p>\n<p>External Links to Tools and Resources Being Used:<br \/>\n<a href=\"https:\/\/github.com\/dj-on-github\/bbedit_odin_language_module\" target=\"_blank\">https:\/\/github.com\/dj-on-github\/bbedit_odin_language_module<\/a><br \/>\n<a href=\"https:\/\/www.barebones.com\" target=\"_blank\">https:\/\/www.barebones.com<\/a><br \/>\n<a href=\"https:\/\/odinbook.com\" target=\"_blank\">https:\/\/odinbook.com<\/a><br \/>\n<a href=\"https:\/\/zylinski.se\/posts\/no-engine-gamedev-using-odin-and-raylib\/\" target=\"_blank\">https:\/\/zylinski.se\/posts\/no-engine-gamedev-using-odin-and-raylib\/<\/a> (RayLib &#038; odin)<br \/>\n<a href=\"https:\/\/odin-lang.org\" target=\"_blank\">https:\/\/odin-lang.org<\/a> <\/p>\n<p>Support:<br \/>\nIf you wished to support the Flax project you are welcome to donate securely<br \/>\nthrough PayPal, or even share any tips and tricks you learned while coding.<br \/>\n<a href=\"https:\/\/paypal.me\/ChartersTrig?locale.x=en_AU&#038;country.x=AU\" target=\"_blank\">https:\/\/paypal.me\/ChartersTrig?locale.x=en_AU&#038;country.x=AU<\/a><\/p>\n<p>Chapters:<br \/>\n00: 00: 00 Introduction<br \/>\n00: 00: 41 A Look at the development environment<br \/>\n00: 01: 03 Project Description<br \/>\n00: 02: 40 Why we chose Odin<br \/>\n00: 03: 20 Integration, documentation and tooling<br \/>\n00: 10: 09 Implementation and testing<br \/>\n00: 49: 29 Initial Flax Assembly Coding and testing<br \/>\n00: 58: 15 Creating a better version<br \/>\n01: 01: 30 Cleaning up<br \/>\n01: 02: 19 Some design decisions and why<br \/>\n01: 04: 45 Yield Phasing<br \/>\n01: 07: 51 Wrap up<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This video shows an open and honest real-time session with one of our developers talking through the process of implementing timers within the Flax engine using the Odin programming language developed by Ginger Bill, @GingerGames and the resultant assembly code within Flax needed to use them. It also discusses our internal approaches, practises, methodologies, and the creation of the needed tooling required to set up such a project. It also&#8230;<\/p>\n","protected":false},"author":1,"featured_media":271582,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","tve_updated_post":"","tve_custom_css":"","tve_user_custom_css":"","tve_globals":{},"tcb2_ready":0,"tcb_editor_enabled":0,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[1],"tags":[],"class_list":["post-271581","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com\" \/>\n<meta property=\"og:description\" content=\"This video shows an open and honest real-time session with one of our developers talking through the process of implementing timers within the Flax engine using the Odin programming language developed by Ginger Bill, @GingerGames and the resultant assembly code within Flax needed to use them. It also discusses our internal approaches, practises, methodologies, and the creation of the needed tooling required to set up such a project. It also...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/\" \/>\n<meta property=\"og:site_name\" content=\"UshopWell.com\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-04T00:35:35+00:00\" \/>\n<meta name=\"author\" content=\"UShopWell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"UShopWell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/\"},\"author\":{\"name\":\"UShopWell\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#\\\/schema\\\/person\\\/6fd1f9e0ff932e534c86c70d5acff0fc\"},\"headline\":\"Development Session &#8211; Odin and Assembly. Implementing timers in Flax.\",\"datePublished\":\"2026-09-04T00:35:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/\"},\"wordCount\":262,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/271581\\\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/\",\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/\",\"name\":\"Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/271581\\\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg\",\"datePublished\":\"2026-09-04T00:35:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/271581\\\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg\",\"contentUrl\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/271581\\\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg\",\"width\":480,\"height\":360,\"caption\":\"Development Session &#8211; Odin and Assembly. Implementing timers in Flax.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/development-session-odin-and-assembly-implementing-timers-in-flax\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Development Session &#8211; Odin and Assembly. Implementing timers in Flax.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#website\",\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/\",\"name\":\"UshopWell.com\",\"description\":\"The Premiere Online Marketplace\",\"publisher\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#organization\",\"name\":\"UshopWell\",\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/pandaSwea.png\",\"contentUrl\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/pandaSwea.png\",\"width\":365,\"height\":359,\"caption\":\"UshopWell\"},\"image\":{\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/#\\\/schema\\\/person\\\/6fd1f9e0ff932e534c86c70d5acff0fc\",\"name\":\"UShopWell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g\",\"caption\":\"UShopWell\"},\"url\":\"https:\\\/\\\/ushopwell.com\\\/ublog\\\/author\\\/kburnettu\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/","og_locale":"en_US","og_type":"article","og_title":"Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com","og_description":"This video shows an open and honest real-time session with one of our developers talking through the process of implementing timers within the Flax engine using the Odin programming language developed by Ginger Bill, @GingerGames and the resultant assembly code within Flax needed to use them. It also discusses our internal approaches, practises, methodologies, and the creation of the needed tooling required to set up such a project. It also...","og_url":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/","og_site_name":"UshopWell.com","article_published_time":"2026-09-04T00:35:35+00:00","author":"UShopWell","twitter_card":"summary_large_image","twitter_misc":{"Written by":"UShopWell","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#article","isPartOf":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/"},"author":{"name":"UShopWell","@id":"https:\/\/ushopwell.com\/ublog\/#\/schema\/person\/6fd1f9e0ff932e534c86c70d5acff0fc"},"headline":"Development Session &#8211; Odin and Assembly. Implementing timers in Flax.","datePublished":"2026-09-04T00:35:35+00:00","mainEntityOfPage":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/"},"wordCount":262,"commentCount":0,"publisher":{"@id":"https:\/\/ushopwell.com\/ublog\/#organization"},"image":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#primaryimage"},"thumbnailUrl":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2026\/09\/271581\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/","url":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/","name":"Development Session - Odin and Assembly. Implementing timers in Flax. - UshopWell.com","isPartOf":{"@id":"https:\/\/ushopwell.com\/ublog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#primaryimage"},"image":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#primaryimage"},"thumbnailUrl":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2026\/09\/271581\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg","datePublished":"2026-09-04T00:35:35+00:00","breadcrumb":{"@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#primaryimage","url":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2026\/09\/271581\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg","contentUrl":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2026\/09\/271581\/development-session-odin-and-assembly-implementing-timers-in-flax.jpg","width":480,"height":360,"caption":"Development Session &#8211; Odin and Assembly. Implementing timers in Flax."},{"@type":"BreadcrumbList","@id":"https:\/\/ushopwell.com\/ublog\/development-session-odin-and-assembly-implementing-timers-in-flax\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ushopwell.com\/ublog\/"},{"@type":"ListItem","position":2,"name":"Development Session &#8211; Odin and Assembly. Implementing timers in Flax."}]},{"@type":"WebSite","@id":"https:\/\/ushopwell.com\/ublog\/#website","url":"https:\/\/ushopwell.com\/ublog\/","name":"UshopWell.com","description":"The Premiere Online Marketplace","publisher":{"@id":"https:\/\/ushopwell.com\/ublog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ushopwell.com\/ublog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ushopwell.com\/ublog\/#organization","name":"UshopWell","url":"https:\/\/ushopwell.com\/ublog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ushopwell.com\/ublog\/#\/schema\/logo\/image\/","url":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2018\/01\/pandaSwea.png","contentUrl":"https:\/\/ushopwell.com\/ublog\/wp-content\/uploads\/2018\/01\/pandaSwea.png","width":365,"height":359,"caption":"UshopWell"},"image":{"@id":"https:\/\/ushopwell.com\/ublog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ushopwell.com\/ublog\/#\/schema\/person\/6fd1f9e0ff932e534c86c70d5acff0fc","name":"UShopWell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4adb372cadd43b4d4c57964dab95b0f69618bf960d131c4acf49d96d6bbc9c6e?s=96&d=mm&r=g","caption":"UShopWell"},"url":"https:\/\/ushopwell.com\/ublog\/author\/kburnettu\/"}]}},"_links":{"self":[{"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/posts\/271581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/comments?post=271581"}],"version-history":[{"count":0,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/posts\/271581\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/media\/271582"}],"wp:attachment":[{"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/media?parent=271581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/categories?post=271581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ushopwell.com\/ublog\/wp-json\/wp\/v2\/tags?post=271581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}