CHARLESTON, South Carolina (CNN) -- Polly Sheppard dove under a table as soon as the bullets started flying.
The stranger who had just been warmly welcomed into the Emanuel African Methodist Episcopal Church began unloading his pistol on a Bible study group, killing nine people.
As Sheppard hid under the table, she saw the shell casings fall and heard the gunman's boots marching toward her.
"Did I shoot you yet?" the killer asked.
When it became clear the answer was no, the gunman told Sheppard he had a different plan for her.
"You're going to tell the story," he said.
That's exactly what Sheppard did Wednesday when she testified in the Dylann Roof murder trial.
Roof, a 22-year-old self-declared white supremacist, has admitted to the killings. Now, after watching an on-camera confession by Roof, jurors could decide not just whether he's legally guilty but also whether he should get the death penalty.
Final heroic acts
During her testimony Wednesday, Sheppard pointed in the courtroom to Roof as the killer.
She also described heroic acts by some of the slain victims.
The Rev. Daniel Simmons tried to lunge at the gunman before he was shot, Sheppard said.
Tywanza Sanders, a barber who attended the Bible study, tried to divert the gunman's attention from others by talking to him and trying to convince him to stop.
"Why are you doing this?" Sanders asked, according to Sheppard.
Roof said he "had to do it -- you're raping our women, raping the nation," Sheppard testified.
Shortly after, Sanders was killed.
Defense: 'I am so sorry'
Sheppard was the last witness called to testify for the prosecution.
During cross-examination, defense attorney David Bruck approached Sheppard and spoke only eight words.
"I am so sorry," he said. "I have no questions."
The prosecution and defense rested Wednesday and will make their closing arguments Thursday morning. The defense did not call any witnesses, and Roof did not testify.
A highly unusual case
Roof's trial has been full of surprises. The 22-year-old initially wanted to represent himself in court. And jurors watched a videotaped confession by Roof, who laughed after saying he killed the victims.
Jurors also heard an FBI agent read a series of Roof's writings -- many of which supported white supremacist views.
Those ramblings revealed why he chose Charleston as the site of his massacre -- and how he defended his white supremacist views.
Roof said he had an epiphany after learning about the killing of Trayvon Martin, an unarmed black Florida teenager shot by neighborhood watch volunteer George Zimmerman in 2012.
"The event that truly awakened me was the Trayvon Martin case. I kept hearing and seeing his name, and eventually I decided to look him up," Roof wrote.
"I read the Wikipedia article and right away I was unable to understand what the big deal was. It was obvious that Zimmerman was in the right."
In another excerpt, Roof claimed that blacks are more likely to be violent.
"Negroes have lower IQs, lower impulse control, and higher testosterone levels in general," Roof wrote. "These three things alone are a recipe for violent behavior."
Eventually, Roof said he wanted to start a race war. He decided to start with the historically black church, also known as Mother Emanuel.
"I have no choice. I am not in the position to, alone, go into the ghetto and fight," he wrote.
"I chose Charleston because it is most historic city in my state, and at one time had the highest ratio of blacks to whites in the country."
Targeting Hispanics, Jews and the American flag
Another revelation from the trial: Roof's writings denounced not just blacks, but also Hispanics and Jews.
"Hispanics are obviously a huge problem for Americans. But there are good Hispanics and bad Hispanics," Roof wrote.
"I don't pretend to understand why Jews do what they do. They are enigma," he added.
He also denounced the American flag.
"I hate the sight of the American flag. Modern American patriotism is an absolute joke," Roof wrote. "People pretending like they have something to be proud (of) while white people are being murdered daily in the streets."
Laughing during his confessions
Roof also expressed his racist beliefs to investigators in an FBI video of his confession, shown in court Friday.
"I went to that church in Charleston and I did it," Roof said and then laughed, the video showed.
"Did you shoot them?" a law enforcement officer asked.
"Yes," Roof replied, laughing again.
Asked how many people he killed that day, Roof replied calmly: "If I was going to guess, five maybe. I'm really not sure."
What's next
The prosecution and defense will make their closing arguments Thursday. If Roof is convicted, the sentencing phase of his trial would start in early January.
Roof has pleaded not guilty to 33 federal charges, including:
-- Nine counts of violating the Hate Crime Act resulting in death
-- Nine counts of use of a firearm to commit murder during and in relation to a crime of violence
-- Nine counts of obstruction of exercise of religion resulting in death
-- Three counts of violating the Hate Crime Act involving an attempt to kill
-- Three counts of obstruction of exercise of religion involving an attempt to kill and use of a dangerous weapon
The-CNN-Wire ™ & © 2016 Cable News Network, Inc., a Time Warner Company. All rights reserved.